public async Task TestUpdateLoadBalancer() { ILoadBalancerService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(60)))) { IEnumerable<LoadBalancingProtocol> protocols = await provider.ListProtocolsAsync(cancellationTokenSource.Token); LoadBalancingProtocol httpProtocol = protocols.First(i => i.Name.Equals("HTTP", StringComparison.OrdinalIgnoreCase)); string loadBalancerName = CreateRandomLoadBalancerName(); string loadBalancerRename = CreateRandomLoadBalancerName(); LoadBalancerConfiguration configuration = new LoadBalancerConfiguration( name: loadBalancerName, nodes: null, protocol: httpProtocol, virtualAddresses: new[] { new LoadBalancerVirtualAddress(LoadBalancerVirtualAddressType.ServiceNet) }, halfClosed: null, accessList: null, algorithm: LoadBalancingAlgorithm.RoundRobin, connectionLogging: null, contentCaching: null, connectionThrottle: null, healthMonitor: null, metadata: null, timeout: null, sessionPersistence: null); LoadBalancer tempLoadBalancer = await provider.CreateLoadBalancerAsync(configuration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); Assert.IsNotNull(tempLoadBalancer); Assert.AreEqual(loadBalancerName, tempLoadBalancer.Name); LoadBalancerUpdate updatedConfiguration = new LoadBalancerUpdate(name: loadBalancerRename); await provider.UpdateLoadBalancerAsync(tempLoadBalancer.Id, updatedConfiguration, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); LoadBalancer renamed = await provider.GetLoadBalancerAsync(tempLoadBalancer.Id, cancellationTokenSource.Token); Assert.IsNotNull(renamed); Assert.AreEqual(tempLoadBalancer.Id, renamed.Id); Assert.AreEqual(loadBalancerRename, renamed.Name); await provider.RemoveLoadBalancerAsync(tempLoadBalancer.Id, AsyncCompletionOption.RequestCompleted, cancellationTokenSource.Token, null); } }
public static void UpdateLoadBalancer(this ILoadBalancerService service, LoadBalancerId loadBalancerId, LoadBalancerUpdate configuration) { if (service == null) throw new ArgumentNullException("service"); try { service.UpdateLoadBalancerAsync(loadBalancerId, configuration, AsyncCompletionOption.RequestSubmitted, CancellationToken.None, null).Wait(); } catch (AggregateException ex) { ReadOnlyCollection<Exception> innerExceptions = ex.Flatten().InnerExceptions; if (innerExceptions.Count == 1) throw innerExceptions[0]; throw; } }