Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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"));
 }
Exemplo n.º 3
0
        public void WhenCreatedFromPath_ThenToStringReturnsPath()
        {
            var path = "projects/project-1/zones/us-central1-a";

            Assert.AreEqual(
                path,
                ZoneLocator.FromString(path).ToString());
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
                }
        }
Exemplo n.º 8
0
 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));
 }