Ejemplo n.º 1
0
        /// <summary>
        /// Serializes the object to JSON.
        /// </summary>
        /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param>
        /// <param name="obj">The object to serialize to JSON.</param>
        internal static void Serialize(JsonWriter writer, UnplacedReplicaInformation obj)
        {
            // Required properties are always serialized, optional properties are serialized when not null.
            writer.WriteStartObject();
            if (obj.ServiceName != null)
            {
                writer.WriteProperty(obj.ServiceName, "ServiceName", ServiceNameConverter.Serialize);
            }

            if (obj.PartitionId != null)
            {
                writer.WriteProperty(obj.PartitionId, "PartitionId", PartitionIdConverter.Serialize);
            }

            if (obj.UnplacedReplicaDetails != null)
            {
                writer.WriteEnumerableProperty(obj.UnplacedReplicaDetails, "UnplacedReplicaDetails", (w, v) => writer.WriteStringValue(v));
            }

            writer.WriteEndObject();
        }
Ejemplo n.º 2
0
        private static async Task DumpClusterAsync(FabricClient fc)
        {
            var qm = fc.QueryManager;
            ClusterLoadInformation info = await qm.GetClusterLoadInformationAsync();

            WriteLine($"LB StartTime={info.LastBalancingStartTimeUtc}, LB EndTime={info.LastBalancingEndTimeUtc}");
            foreach (LoadMetricInformation lmi in info.LoadMetricInformationList)
            {
                WriteLine($"Name={lmi.Name}");
            }

            foreach (ProvisionedFabricCodeVersion pfcv in await qm.GetProvisionedFabricCodeVersionListAsync())
            {
                WriteLine($"SF CodeVersion={pfcv.CodeVersion}");
            }

            foreach (ProvisionedFabricConfigVersion pfcv in await qm.GetProvisionedFabricConfigVersionListAsync())
            {
                WriteLine($"SF Config version={pfcv.ConfigVersion}");
            }

            foreach (ApplicationType at in await qm.GetApplicationTypeListAsync())
            {
                WriteLine($"Name={at.ApplicationTypeName}, Ver={at.ApplicationTypeVersion}");
                foreach (ServiceType st in await qm.GetServiceTypeListAsync(at.ApplicationTypeName, at.ApplicationTypeVersion))
                {
                    WriteLine($"   Name={st.ServiceManifestName}, Ver={st.ServiceManifestVersion}");
                }
            }

            foreach (Node n in await qm.GetNodeListAsync())
            {
                WriteLine($"Name={n.NodeName}, Health={n.HealthState}, FD={n.FaultDomain}, UD={n.UpgradeDomain}, IP={n.IpAddressOrFQDN}");
                NodeLoadInformation nli = await qm.GetNodeLoadInformationAsync(n.NodeName);

                foreach (NodeLoadMetricInformation nlmi in nli.NodeLoadMetricInformationList)
                {
                    WriteLine($"Name={nlmi.Name}, Remaining={nlmi.NodeRemainingCapacity}");
                }

                foreach (DeployedApplication da in await qm.GetDeployedApplicationListAsync(n.NodeName))
                {
                    WriteLine(da.ApplicationName);
                    foreach (DeployedCodePackage dcp in await qm.GetDeployedCodePackageListAsync(n.NodeName, da.ApplicationName))
                    {
                        WriteLine(dcp.EntryPoint.EntryPointLocation);
                    }
                    foreach (DeployedServiceType dst in await qm.GetDeployedServiceTypeListAsync(n.NodeName, da.ApplicationName))
                    {
                        WriteLine(dst.ServiceTypeName);
                    }
                    foreach (DeployedServiceReplica dsr in await qm.GetDeployedReplicaListAsync(n.NodeName, da.ApplicationName))
                    {
                        long?id = (dsr as DeployedStatefulServiceReplica)?.ReplicaId;
                        if (id == null)
                        {
                            id = (dsr as DeployedStatelessServiceInstance)?.InstanceId;
                        }
                        WriteLine($"ServiceName={dsr.ServiceName}, PartitionId={dsr.Partitionid}, ReplicaId={id}, Status={dsr.ReplicaStatus}");
                        DeployedServiceReplicaDetail drd = await qm.GetDeployedReplicaDetailAsync(n.NodeName, dsr.Partitionid, id.Value);
                    }
                    foreach (DeployedServicePackage dsp in await qm.GetDeployedServicePackageListAsync(n.NodeName, da.ApplicationName))
                    {
                        WriteLine($"ManifestName={dsp.ServiceManifestName}, Status={dsp.DeployedServicePackageStatus}");
                    }
                }
            }

            foreach (Application a in await qm.GetApplicationListAsync())
            {
                WriteLine($"App={a.ApplicationName}, Status={a.ApplicationStatus}, Health={a.HealthState}");

                foreach (Service s in await qm.GetServiceListAsync(a.ApplicationName))
                {
                    WriteLine($"   Service={s.ServiceName}, Status={s.ServiceStatus}, Health={s.HealthState}");

                    foreach (Partition p in await qm.GetPartitionListAsync(s.ServiceName))
                    {
                        WriteLine($"      Partition={p.PartitionInformation.Id}, Status={p.PartitionStatus}, Health={p.HealthState}");
                        PartitionLoadInformation pli = await qm.GetPartitionLoadInformationAsync(p.PartitionInformation.Id);

                        foreach (Replica r in await qm.GetReplicaListAsync(p.PartitionInformation.Id))
                        {
                            WriteLine($"         Replica={r.Id}, Status={r.ReplicaStatus}, Health={r.HealthState}");

                            ReplicaLoadInformation rli = await qm.GetReplicaLoadInformationAsync(p.PartitionInformation.Id, r.Id);
                        }
                        UnplacedReplicaInformation ur = await qm.GetUnplacedReplicaInformationAsync(s.ServiceName.ToString(), p.PartitionInformation.Id, false);

                        if (ur.UnplacedReplicaReasons.Count > 0)
                        {
                            WriteLine("Unplaced partition replicas");
                            foreach (var reason in ur.UnplacedReplicaReasons)
                            {
                                WriteLine(reason);
                            }
                        }
                    }
                }
            }
        }