Esempio n. 1
0
        private void SetInstanceOrReplicaMonitoringList(
            Uri appName,
            List <string> serviceFilterList,
            ServiceFilterType filterType,
            string appTypeName,
            DeployedServiceReplicaList deployedReplicaList,
            ref List <ReplicaOrInstanceMonitoringInfo> replicaMonitoringList)
        {
            foreach (var deployedReplica in deployedReplicaList)
            {
                ReplicaOrInstanceMonitoringInfo replicaInfo = null;

                if (deployedReplica is DeployedStatefulServiceReplica statefulReplica &&
                    statefulReplica.ReplicaRole == ReplicaRole.Primary)
                {
                    replicaInfo = new ReplicaOrInstanceMonitoringInfo()
                    {
                        ApplicationName     = appName,
                        ApplicationTypeName = appTypeName,
                        HostProcessId       = statefulReplica.HostProcessId,
                        ReplicaOrInstanceId = statefulReplica.ReplicaId,
                        PartitionId         = statefulReplica.Partitionid,
                    };

                    if (serviceFilterList != null &&
                        filterType != ServiceFilterType.None)
                    {
                        bool isInFilterList = serviceFilterList.Any(s => statefulReplica.ServiceName.OriginalString.ToLower().Contains(s.ToLower()));

                        // Include
                        if (filterType == ServiceFilterType.Include &&
                            !isInFilterList)
                        {
                            continue;
                        }

                        // Exclude
                        else if (filterType == ServiceFilterType.Exclude &&
                                 isInFilterList)
                        {
                            continue;
                        }
                    }
                }
        private async Task <List <ReplicaOrInstanceMonitoringInfo> > GetDeployedPrimaryReplicaAsync(
            Uri appName,
            List <string> serviceFilterList = null,
            ServiceFilterType filterType    = ServiceFilterType.None,
            string appTypeName = null)
        {
            var deployedReplicaList = await FabricClientInstance.QueryManager.GetDeployedReplicaListAsync(NodeName, appName).ConfigureAwait(true);

            var replicaMonitoringList = new List <ReplicaOrInstanceMonitoringInfo>();

            SetInstanceOrReplicaMonitoringList(
                appName,
                serviceFilterList,
                filterType,
                appTypeName,
                deployedReplicaList,
                ref replicaMonitoringList);

            return(replicaMonitoringList);
        }