public static HealthEvaluation CreateRandomHealthEvaluation(this Random random)
        {
            var chooseEvent           = random.Next() % 3 == 0;
            HealthEvaluationKind kind = chooseEvent ? HealthEvaluationKind.Event : CreateRandom <HealthEvaluationKind>(random);
            Type targetType           = HealthEvaluation.GetDerivedHealthEvaluationClassTypeFromKind(kind);

            return((HealthEvaluation)random.CreateRandom(targetType));
        }
Exemple #2
0
        /// <summary>
        /// Gets the object from Json properties.
        /// </summary>
        /// <param name="reader">The <see cref="T: Newtonsoft.Json.JsonReader" /> to read from.</param>
        /// <returns>The object Value.</returns>
        internal static HealthEvaluation GetFromJsonProperties(JsonReader reader)
        {
            HealthEvaluation obj = null;
            var propName         = reader.ReadPropertyName();

            if (!propName.Equals("Kind", StringComparison.Ordinal))
            {
                throw new JsonReaderException($"Incorrect discriminator property name {propName}, Expected discriminator property name is Kind.");
            }

            var propValue = reader.ReadValueAsString();

            if (propValue.Equals("Application", StringComparison.Ordinal))
            {
                obj = ApplicationHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Applications", StringComparison.Ordinal))
            {
                obj = ApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("ApplicationTypeApplications", StringComparison.Ordinal))
            {
                obj = ApplicationTypeApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("DeltaNodesCheck", StringComparison.Ordinal))
            {
                obj = DeltaNodesCheckHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("DeployedApplication", StringComparison.Ordinal))
            {
                obj = DeployedApplicationHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("DeployedApplications", StringComparison.Ordinal))
            {
                obj = DeployedApplicationsHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("DeployedServicePackage", StringComparison.Ordinal))
            {
                obj = DeployedServicePackageHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("DeployedServicePackages", StringComparison.Ordinal))
            {
                obj = DeployedServicePackagesHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Event", StringComparison.Ordinal))
            {
                obj = EventHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Node", StringComparison.Ordinal))
            {
                obj = NodeHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Nodes", StringComparison.Ordinal))
            {
                obj = NodesHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Partition", StringComparison.Ordinal))
            {
                obj = PartitionHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Partitions", StringComparison.Ordinal))
            {
                obj = PartitionsHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Replica", StringComparison.Ordinal))
            {
                obj = ReplicaHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Replicas", StringComparison.Ordinal))
            {
                obj = ReplicasHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Service", StringComparison.Ordinal))
            {
                obj = ServiceHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("Services", StringComparison.Ordinal))
            {
                obj = ServicesHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("SystemApplication", StringComparison.Ordinal))
            {
                obj = SystemApplicationHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("UpgradeDomainDeltaNodesCheck", StringComparison.Ordinal))
            {
                obj = UpgradeDomainDeltaNodesCheckHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else if (propValue.Equals("UpgradeDomainNodes", StringComparison.Ordinal))
            {
                obj = UpgradeDomainNodesHealthEvaluationConverter.GetFromJsonProperties(reader);
            }
            else
            {
                throw new InvalidOperationException("Unknown Kind.");
            }

            return(obj);
        }
Exemple #3
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, HealthEvaluation obj)
        {
            var kind = obj.Kind;

            if (kind.Equals(HealthEvaluationKind.Application))
            {
                ApplicationHealthEvaluationConverter.Serialize(writer, (ApplicationHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Applications))
            {
                ApplicationsHealthEvaluationConverter.Serialize(writer, (ApplicationsHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.ApplicationTypeApplications))
            {
                ApplicationTypeApplicationsHealthEvaluationConverter.Serialize(writer, (ApplicationTypeApplicationsHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.DeltaNodesCheck))
            {
                DeltaNodesCheckHealthEvaluationConverter.Serialize(writer, (DeltaNodesCheckHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.DeployedApplication))
            {
                DeployedApplicationHealthEvaluationConverter.Serialize(writer, (DeployedApplicationHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.DeployedApplications))
            {
                DeployedApplicationsHealthEvaluationConverter.Serialize(writer, (DeployedApplicationsHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.DeployedServicePackage))
            {
                DeployedServicePackageHealthEvaluationConverter.Serialize(writer, (DeployedServicePackageHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.DeployedServicePackages))
            {
                DeployedServicePackagesHealthEvaluationConverter.Serialize(writer, (DeployedServicePackagesHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Event))
            {
                EventHealthEvaluationConverter.Serialize(writer, (EventHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Node))
            {
                NodeHealthEvaluationConverter.Serialize(writer, (NodeHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Nodes))
            {
                NodesHealthEvaluationConverter.Serialize(writer, (NodesHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Partition))
            {
                PartitionHealthEvaluationConverter.Serialize(writer, (PartitionHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Partitions))
            {
                PartitionsHealthEvaluationConverter.Serialize(writer, (PartitionsHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Replica))
            {
                ReplicaHealthEvaluationConverter.Serialize(writer, (ReplicaHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Replicas))
            {
                ReplicasHealthEvaluationConverter.Serialize(writer, (ReplicasHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Service))
            {
                ServiceHealthEvaluationConverter.Serialize(writer, (ServiceHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.Services))
            {
                ServicesHealthEvaluationConverter.Serialize(writer, (ServicesHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.SystemApplication))
            {
                SystemApplicationHealthEvaluationConverter.Serialize(writer, (SystemApplicationHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.UpgradeDomainDeltaNodesCheck))
            {
                UpgradeDomainDeltaNodesCheckHealthEvaluationConverter.Serialize(writer, (UpgradeDomainDeltaNodesCheckHealthEvaluation)obj);
            }
            else if (kind.Equals(HealthEvaluationKind.UpgradeDomainNodes))
            {
                UpgradeDomainNodesHealthEvaluationConverter.Serialize(writer, (UpgradeDomainNodesHealthEvaluation)obj);
            }
            else
            {
                throw new InvalidOperationException("Unknown Kind.");
            }
        }
Exemple #4
0
            internal static FabricUpgradeProgress CreateFromNative(NativeClient.IFabricUpgradeProgressResult3 nativeResult)
            {
                if (nativeResult == null)
                {
                    return(null);
                }

                var progress = new FabricUpgradeProgress(nativeResult);

                progress.TargetCodeVersion   = NativeTypes.FromNativeString(nativeResult.get_TargetCodeVersion());
                progress.TargetConfigVersion = NativeTypes.FromNativeString(nativeResult.get_TargetConfigVersion());

                switch (nativeResult.get_UpgradeState())
                {
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_IN_PROGRESS:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_COMPLETED:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLBACK_PENDING:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_PENDING:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_IN_PROGRESS:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_ROLLFORWARD_COMPLETED:
                case NativeTypes.FABRIC_UPGRADE_STATE.FABRIC_UPGRADE_STATE_FAILED:
                    progress.UpgradeState = (FabricUpgradeState)nativeResult.get_UpgradeState();
                    break;

                default:
                    progress.UpgradeState = FabricUpgradeState.Invalid;
                    break;
                }

                uint   count   = 0;
                IntPtr pointer = nativeResult.GetUpgradeDomains(out count);

                progress.UpgradeDomains = UpgradeDomainHelper.CreateUpgradeDomainsFromNative(count, pointer);

                switch (nativeResult.get_RollingUpgradeMode())
                {
                case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_UNMONITORED_AUTO:
                case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_UNMONITORED_MANUAL:
                case NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_MONITORED:
                    progress.RollingUpgradeMode = (RollingUpgradeMode)nativeResult.get_RollingUpgradeMode();
                    break;

                default:
                    progress.RollingUpgradeMode = RollingUpgradeMode.Invalid;
                    break;
                }

                progress.NextUpgradeDomain = NativeTypes.FromNativeString(nativeResult.get_NextUpgradeDomain());

                IntPtr upgradeProgressPtr = nativeResult.get_UpgradeProgress();

                if (upgradeProgressPtr != IntPtr.Zero)
                {
                    unsafe
                    {
                        var castedProgressPtr = (NativeTypes.FABRIC_UPGRADE_PROGRESS *)upgradeProgressPtr;
                        progress.UpgradeDescription           = FabricUpgradeDescription.FromNative(castedProgressPtr->UpgradeDescription);
                        progress.UpgradeDuration              = TimeSpan.FromSeconds(castedProgressPtr->UpgradeDurationInSeconds);
                        progress.CurrentUpgradeDomainDuration = TimeSpan.FromSeconds(castedProgressPtr->CurrentUpgradeDomainDurationInSeconds);
                        progress.UnhealthyEvaluations         = HealthEvaluation.FromNativeList(castedProgressPtr->UnhealthyEvaluations);
                        progress.CurrentUpgradeDomainProgress = UpgradeDomainProgress.FromNative(castedProgressPtr->CurrentUpgradeDomainProgress);

                        if (castedProgressPtr->Reserved != IntPtr.Zero)
                        {
                            var castedProgressEx1Ptr = (NativeTypes.FABRIC_UPGRADE_PROGRESS_EX1 *)castedProgressPtr->Reserved;
                            progress.StartTimestampUtc   = NativeTypes.FromNullableNativeFILETIME(castedProgressEx1Ptr->StartTimestampUtc);
                            progress.FailureTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedProgressEx1Ptr->FailureTimestampUtc);

                            if (progress.FailureTimestampUtc.HasValue)
                            {
                                switch (castedProgressEx1Ptr->FailureReason)
                                {
                                case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_INTERRUPTED:
                                case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_HEALTH_CHECK:
                                case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_UPGRADE_DOMAIN_TIMEOUT:
                                case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_OVERALL_UPGRADE_TIMEOUT:
                                case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_PROCESSING_FAILURE:
                                    progress.FailureReason = (UpgradeFailureReason)castedProgressEx1Ptr->FailureReason;
                                    break;

                                default:
                                    progress.FailureReason = UpgradeFailureReason.None;
                                    break;
                                }

                                progress.UpgradeDomainProgressAtFailure = UpgradeDomainProgress.FromNative(
                                    castedProgressEx1Ptr->UpgradeDomainProgressAtFailure);
                            }
                        }
                    }
                }

                GC.KeepAlive(nativeResult);
                return(progress);
            }
Exemple #5
0
        internal static unsafe ComposeDeploymentUpgradeProgress CreateFromNative(
            NativeClient.IFabricComposeDeploymentUpgradeProgressResult nativeResult)
        {
            ComposeDeploymentUpgradeProgress result = new ComposeDeploymentUpgradeProgress();
            IntPtr upgradeProgressPtr = nativeResult.get_UpgradeProgress();

            if (upgradeProgressPtr != IntPtr.Zero)
            {
                var castedUpgradeProgressPtr = (NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_PROGRESS *)upgradeProgressPtr;

                result.ApplicationName = NativeTypes.FromNativeUri(castedUpgradeProgressPtr->ApplicationName);
                result.DeploymentName  = NativeTypes.FromNativeString(castedUpgradeProgressPtr->DeploymentName);

                // Upgrade policy
                if (castedUpgradeProgressPtr->UpgradePolicyDescription != IntPtr.Zero)
                {
                    RollingUpgradePolicyDescription policy = null;

                    var castedPolicyPtr = (NativeTypes.FABRIC_ROLLING_UPGRADE_POLICY_DESCRIPTION *)castedUpgradeProgressPtr->UpgradePolicyDescription;

                    if (castedPolicyPtr->RollingUpgradeMode == NativeTypes.FABRIC_ROLLING_UPGRADE_MODE.FABRIC_ROLLING_UPGRADE_MODE_MONITORED)
                    {
                        policy = MonitoredRollingApplicationUpgradePolicyDescription.FromNative(castedUpgradeProgressPtr->UpgradePolicyDescription);
                    }
                    else
                    {
                        policy = RollingUpgradePolicyDescription.FromNative(castedUpgradeProgressPtr->UpgradePolicyDescription);
                    }

                    result.UpgradePolicyDescription = policy;
                }

                result.TargetApplicationTypeVersion = NativeTypes.FromNativeString(castedUpgradeProgressPtr->TargetApplicationTypeVersion);

                switch (castedUpgradeProgressPtr->UpgradeState)
                {
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_PROVISIONING_TARGET:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_IN_PROGRESS:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_PENDING:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_UNPROVISIONING_CURRENT:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_FORWARD_COMPLETED:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_BACK_IN_PROGRESS:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_UNPROVISIONING_TARGET:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_ROLLING_BACK_COMPLETED:
                case NativeTypes.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE.FABRIC_COMPOSE_DEPLOYMENT_UPGRADE_STATE_FAILED:
                    result.UpgradeState = (ComposeDeploymentUpgradeState)castedUpgradeProgressPtr->UpgradeState;
                    break;

                default:
                    result.UpgradeState = ComposeDeploymentUpgradeState.Invalid;
                    break;
                }

                result.NextUpgradeDomain = NativeTypes.FromNativeString(castedUpgradeProgressPtr->NextUpgradeDomain);
                if (castedUpgradeProgressPtr->UpgradeDomains != IntPtr.Zero)
                {
                    var  upgradeDomainsPtr = (NativeTypes.FABRIC_UPGRADE_DOMAIN_STATUS_DESCRIPTION_LIST *)castedUpgradeProgressPtr->UpgradeDomains;
                    uint count             = upgradeDomainsPtr->Count;
                    result.UpgradeDomains = Interop.InteropHelpers.UpgradeDomainHelper.CreateUpgradeDomainsFromNative(count, upgradeDomainsPtr->Items);
                }

                result.UpgradeDuration = TimeSpan.FromSeconds(castedUpgradeProgressPtr->UpgradeDurationInSeconds);
                result.CurrentUpgradeDomainDuration    = TimeSpan.FromSeconds(castedUpgradeProgressPtr->CurrentUpgradeDomainDurationInSeconds);
                result.ApplicationUnhealthyEvaluations = HealthEvaluation.FromNativeList(castedUpgradeProgressPtr->ApplicationUnhealthyEvaluations);
                result.CurrentUpgradeDomainProgress    = UpgradeDomainProgress.FromNative(castedUpgradeProgressPtr->CurrentUpgradeDomainProgress);
                result.StartTimestampUtc   = NativeTypes.FromNullableNativeFILETIME(castedUpgradeProgressPtr->StartTimestampUtc);
                result.FailureTimestampUtc = NativeTypes.FromNullableNativeFILETIME(castedUpgradeProgressPtr->FailureTimestampUtc);

                if (result.FailureTimestampUtc.HasValue)
                {
                    switch (castedUpgradeProgressPtr->FailureReason)
                    {
                    case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_INTERRUPTED:
                    case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_HEALTH_CHECK:
                    case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_UPGRADE_DOMAIN_TIMEOUT:
                    case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_OVERALL_UPGRADE_TIMEOUT:
                    case NativeTypes.FABRIC_UPGRADE_FAILURE_REASON.FABRIC_UPGRADE_FAILURE_REASON_PROCESSING_FAILURE:
                        result.FailureReason = (UpgradeFailureReason)castedUpgradeProgressPtr->FailureReason;
                        break;

                    default:
                        result.FailureReason = UpgradeFailureReason.None;
                        break;
                    }

                    result.UpgradeDomainProgressAtFailure = UpgradeDomainProgress.FromNative(castedUpgradeProgressPtr->UpgradeDomainProgressAtFailure);
                }

                result.ApplicationUpgradeStatusDetails = NativeTypes.FromNativeString(castedUpgradeProgressPtr->ApplicationUpgradeStatusDetails);
                result.UpgradeStatusDetails            = NativeTypes.FromNativeString(castedUpgradeProgressPtr->UpgradeStatusDetails);
            }

            return(result);
        }
        public void  HealthEvaluationSerializationTest()
        {
            HealthEvaluation item1 = this.random.CreateRandom <EventHealthEvaluation>();

            RecreateObjectAndCompare(item1, this.Serializer, typeof(HealthEvaluation));
        }