public async Task <IEnumerable <NodeGroupNode> > ListNodesAsync( string projectId, CancellationToken cancellationToken) { using (TraceSources.IapDesktop.TraceMethod().WithParameters(projectId)) { var nodeGroups = await ListNodeGroupsAsync( projectId, cancellationToken) .ConfigureAwait(false); var nodesAcrossGroups = Enumerable.Empty <NodeGroupNode>(); foreach (var nodeGroup in nodeGroups) { nodesAcrossGroups = nodesAcrossGroups.Concat(await ListNodesAsync( ZoneLocator.FromString(nodeGroup.Zone), nodeGroup.Name, cancellationToken) .ConfigureAwait(false)); } return(nodesAcrossGroups); } }
public void WhenPathInvalid_FromStringThrowsArgumentException() { Assert.Throws <ArgumentException>(() => ZoneLocator.FromString( "projects/project-1/zone/us-central1-a")); Assert.Throws <ArgumentException>(() => ZoneLocator.FromString( "projects/project-1/zones")); }
public void WhenCreatedFromPath_ThenToStringReturnsPath() { var path = "projects/project-1/zones/us-central1-a"; Assert.AreEqual( path, ZoneLocator.FromString(path).ToString()); }
public void WhenQualifiedByGoogleapisHost_FromStringReturnsObject() { var ref1 = ZoneLocator.FromString( "https://www.googleapis.com/compute/v1/projects/project-1/zones/us-central1-a"); Assert.AreEqual("zones", ref1.ResourceType); Assert.AreEqual("us-central1-a", ref1.Name); Assert.AreEqual("project-1", ref1.ProjectId); }
public void WhenPathIsValid_FromStringReturnsObject() { var ref1 = ZoneLocator.FromString( "projects/project-1/zones/us-central1-a"); Assert.AreEqual("zones", ref1.ResourceType); Assert.AreEqual("us-central1-a", ref1.Name); Assert.AreEqual("project-1", ref1.ProjectId); }
public void WhenCreatedFromUrl_ThenToStringReturnsPath() { var path = "projects/project-1/zones/us-central1-a"; Assert.AreEqual( path, ZoneLocator.FromString( "https://www.googleapis.com/compute/v1/" + path).ToString()); }
private async Task <IReadOnlyCollection <IProjectModelZoneNode> > LoadZones( ProjectLocator project, CancellationToken token) { using (ApplicationTraceSources.Default.TraceMethod().WithoutParameters()) using (var computeEngineAdapter = this.serviceProvider .GetService <IComputeEngineAdapter>()) { var instances = await computeEngineAdapter .ListInstancesAsync(project.ProjectId, token) .ConfigureAwait(false); var zoneLocators = instances .EnsureNotNull() .Select(i => ZoneLocator.FromString(i.Zone)) .ToHashSet(); var zones = new List <ZoneNode>(); foreach (var zoneLocator in zoneLocators.OrderBy(z => z.Name)) { var instancesInZone = instances .Where(i => ZoneLocator.FromString(i.Zone) == zoneLocator) .Where(i => i.Disks != null && i.Disks.Any()) .OrderBy(i => i.Name) .Select(i => new InstanceNode( i.Id.Value, new InstanceLocator( zoneLocator.ProjectId, zoneLocator.Name, i.Name), i.IsWindowsInstance() ? OperatingSystems.Windows : OperatingSystems.Linux, i.Status == "RUNNING")) .ToList(); zones.Add(new ZoneNode( zoneLocator, instancesInZone)); } return(zones); } }
public void WhenPathLacksProject_FromStringThrowsArgumentException() { Assert.Throws <ArgumentException>(() => ZoneLocator.FromString( "/project-1/project-1/zones/us-central1-a")); }
public static ZoneLocator GetZoneLocator(this Instance instance) { return(ZoneLocator.FromString(instance.Zone)); }