From 3237c8eecc51a6d20d8243fbe2fd7d7e2c18f483 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 14 Oct 2017 00:15:15 -0700 Subject: [PATCH] PublicIpAddressObject --- .../Azure.Experiments.Tests/ComputeTest.cs | 16 ++++++++-- .../Azure.Experiments/Context.cs | 9 +++++- .../PublicIpAddressObject.cs | 32 +++++++++++++++++++ .../{AzureResource.cs => ResourceObject.cs} | 6 ++-- .../Azure.Experiments/VirtualNetworkObject.cs | 6 ++-- 5 files changed, 58 insertions(+), 11 deletions(-) create mode 100644 experiments/Azure.Experiments/Azure.Experiments/PublicIpAddressObject.cs rename experiments/Azure.Experiments/Azure.Experiments/{AzureResource.cs => ResourceObject.cs} (80%) diff --git a/experiments/Azure.Experiments/Azure.Experiments.Tests/ComputeTest.cs b/experiments/Azure.Experiments/Azure.Experiments.Tests/ComputeTest.cs index 0a846b7f727e..7b019fc927fc 100644 --- a/experiments/Azure.Experiments/Azure.Experiments.Tests/ComputeTest.cs +++ b/experiments/Azure.Experiments/Azure.Experiments.Tests/ComputeTest.cs @@ -1,12 +1,13 @@ using Xunit; using Microsoft.Azure.Management.Compute; +using System.Threading.Tasks; namespace Azure.Experiments.Tests { public class ComputeTest { [Fact] - public async void ResourceGroupTest() + public async Task ResourceGroupTest() { var c = Credentials.Get(); var rg = new ResourceGroupObject("My"); @@ -16,7 +17,7 @@ public async void ResourceGroupTest() } [Fact] - public async void VirtualNetworkTest() + public async Task VirtualNetworkTest() { var c = Credentials.Get(); var rg = new ResourceGroupObject("My1"); @@ -26,7 +27,16 @@ public async void VirtualNetworkTest() } [Fact] - public async void Test1() + public async Task PublicIpAddressTest() + { + var c = Credentials.Get(); + var rg = new ResourceGroupObject("MyPIA"); + var pia = new PublicIpAddressObject("MyPIA", rg); + var info = await pia.GetOrCreateAsync(c); + } + + [Fact] + public async Task Test1() { var c = Credentials.Get(); var client = new ComputeManagementClient(c.Credentials) diff --git a/experiments/Azure.Experiments/Azure.Experiments/Context.cs b/experiments/Azure.Experiments/Azure.Experiments/Context.cs index 5b6807dce32e..d1c9f2e8b0e6 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/Context.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/Context.cs @@ -1,4 +1,5 @@ -using Microsoft.Rest; +using Microsoft.Azure.Management.Network; +using Microsoft.Rest; namespace Azure.Experiments { @@ -13,5 +14,11 @@ public Context(ServiceClientCredentials credentials, string subscriptionId) public ServiceClientCredentials Credentials { get; } public string SubscriptionId { get; } + + public NetworkManagementClient CreateNetwork() + => new NetworkManagementClient(Credentials) + { + SubscriptionId = SubscriptionId + }; } } diff --git a/experiments/Azure.Experiments/Azure.Experiments/PublicIpAddressObject.cs b/experiments/Azure.Experiments/Azure.Experiments/PublicIpAddressObject.cs new file mode 100644 index 000000000000..91f11cfadeb2 --- /dev/null +++ b/experiments/Azure.Experiments/Azure.Experiments/PublicIpAddressObject.cs @@ -0,0 +1,32 @@ +using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network.Models; +using System; +using System.Threading.Tasks; + +namespace Azure.Experiments +{ + public sealed class PublicIpAddressObject : + ResourceObject + { + public PublicIpAddressObject(string name, ResourceGroupObject rg) : base(name, rg) + { + } + + protected override Task CreateAsync(IPublicIPAddressesOperations c) + => c.CreateOrUpdateAsync( + ResourceGroupName, + Name, + new PublicIPAddress { Location = "eastus" }); + + protected override IPublicIPAddressesOperations CreateClient(Context c) + => c.CreateNetwork().PublicIPAddresses; + + protected override Task DeleteAsync(IPublicIPAddressesOperations c) + { + throw new NotImplementedException(); + } + + protected override Task GetOrThrowAsync(IPublicIPAddressesOperations c) + => c.GetAsync(ResourceGroupName, Name); + } +} diff --git a/experiments/Azure.Experiments/Azure.Experiments/AzureResource.cs b/experiments/Azure.Experiments/Azure.Experiments/ResourceObject.cs similarity index 80% rename from experiments/Azure.Experiments/Azure.Experiments/AzureResource.cs rename to experiments/Azure.Experiments/Azure.Experiments/ResourceObject.cs index 1bb5769485a2..6a1265617be0 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/AzureResource.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/ResourceObject.cs @@ -3,12 +3,12 @@ namespace Azure.Experiments { - public abstract class AzureResource : AzureObject + public abstract class ResourceObject : AzureObject where T : class { protected string ResourceGroupName { get; } - protected AzureResource( + protected ResourceObject( string name, ResourceGroupObject rg, IEnumerable dependencies) @@ -17,7 +17,7 @@ protected AzureResource( ResourceGroupName = rg.Name; } - protected AzureResource( + protected ResourceObject( string name, ResourceGroupObject rg) : this(name, rg, Enumerable.Empty()) diff --git a/experiments/Azure.Experiments/Azure.Experiments/VirtualNetworkObject.cs b/experiments/Azure.Experiments/Azure.Experiments/VirtualNetworkObject.cs index d088a1e22d96..77adcf946009 100644 --- a/experiments/Azure.Experiments/Azure.Experiments/VirtualNetworkObject.cs +++ b/experiments/Azure.Experiments/Azure.Experiments/VirtualNetworkObject.cs @@ -5,7 +5,7 @@ namespace Azure.Experiments { public sealed class VirtualNetworkObject : - AzureResource + ResourceObject { public VirtualNetworkObject( string name, @@ -30,9 +30,7 @@ protected override Task CreateAsync(IVirtualNetworksOperations c }); protected override IVirtualNetworksOperations CreateClient(Context c) - => new NetworkManagementClient(c.Credentials) - { SubscriptionId = c.SubscriptionId } - .VirtualNetworks; + => c.CreateNetwork().VirtualNetworks; protected override Task DeleteAsync(IVirtualNetworksOperations c) => c.DeleteAsync(ResourceGroupName, Name);