Пример #1
0
 /// <summary>
 ///  Alarm activates, deactivates, and queries alarms regarding cluster health in async
 /// </summary>
 /// <param name="request">Alarm request</param>
 /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
 /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
 /// <param name="cancellationToken">An optional token for canceling the call.</param>
 /// <returns>Alarm Response</returns>
 public async Task <AlarmResponse> AlarmAsync(AlarmRequest request, Grpc.Core.Metadata headers = null,
                                              DateTime?deadline = null,
                                              CancellationToken cancellationToken = default)
 {
     return(await CallEtcdAsync(async (connection) => await connection._maintenanceClient
                                .AlarmAsync(request, headers, deadline, cancellationToken)).ConfigureAwait(false));
 }
Пример #2
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health in async
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
        /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
        /// <param name="cancellationToken">An optional token for canceling the call.</param>
        /// <returns>Alarm Response</returns>
        public async Task <AlarmResponse> AlarmAsync(AlarmRequest request, Grpc.Core.Metadata headers = null,
                                                     DateTime?deadline = null,
                                                     CancellationToken cancellationToken = default)
        {
            AlarmResponse response   = new AlarmResponse();
            bool          success    = false;
            int           retryCount = 0;

            while (!success)
            {
                try
                {
                    response = await _balancer.GetConnection().maintenanceClient
                               .AlarmAsync(request, headers, deadline, cancellationToken);

                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw;
                    }
                }
            }

            return(response);
        }
Пример #3
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health in async
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <returns>Alarm Response</returns>
        public async Task <AlarmResponse> AlarmAsync(AlarmRequest request, Metadata headers = null)
        {
            AlarmResponse response   = new AlarmResponse();
            bool          success    = false;
            int           retryCount = 0;

            while (!success)
            {
                try
                {
                    response = await _balancer.GetConnection().maintenanceClient.AlarmAsync(request, headers);

                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw ex;
                    }
                }
            }
            return(response);
        }
Пример #4
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health in async
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <returns>Alarm Response</returns>
        public async Task <AlarmResponse> AlarmAsync(AlarmRequest request, Metadata headers = null)
        {
            AlarmResponse response = new AlarmResponse();

            response = await _balancer.GetConnection().maintenanceClient.AlarmAsync(request, headers);

            return(response);
        }
Пример #5
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <returns>Alarm Response</returns>
        public AlarmResponse Alarm(AlarmRequest request, Metadata headers = null)
        {
            AlarmResponse response = new AlarmResponse();

            response = _balancer.GetConnection().maintenanceClient.Alarm(request, headers);

            return(response);
        }
Пример #6
0
        public async Task <bool> SetAlarmModeAsync(Guid paritionUuid, string pinCode, Enums.AlarmArmMode newStatus, string secureSessionId = null,
                                                   bool raiseExceptionWhenNotSuccesful = true)
        {
            if (secureSessionId == null)
            {
                var session = await InitializeSecuritySessionAsync();

                if (!session.Success)
                {
                    throw new Exceptions.CannotEstablishSecuritySessionException(session.Error);
                }

                var pinLoginResponse = await LoginAlarmWithPinAsync(session.Response.SecureSessionId,
                                                                    session.Response.Salt,
                                                                    session.Response.Nonce, pinCode);

                if (!pinLoginResponse.Success || !pinLoginResponse.Response.Success)
                {
                    throw new Exceptions.CannotSignInAlarmSystemWithPINException(pinLoginResponse.Response.Error);
                }
                secureSessionId = pinLoginResponse.Response.SecureSessionId;
            }

            var alarmRequest = new AlarmRequest()
            {
                ArmMode         = Enum.GetName(typeof(Enums.AlarmArmMode), newStatus),
                SecureSessionId = secureSessionId
            };

            var request = new RestRequest("alarm/partitions/" + paritionUuid + "/setMode", HttpMethod.Post);

            request.ContentType = ContentTypes.Json;
            request.AddParameter(alarmRequest);
            var retVal = await _httpClient.SendWithPolicyAsync <AlarmRequestResponse>(this, request);

            if (!retVal.HttpResponseMessage.IsSuccessStatusCode)
            {
                if (raiseExceptionWhenNotSuccesful)
                {
                    throw new Exceptions.CannotSetAlarmStateException("Server returned: " + retVal.HttpResponseMessage.StatusCode);
                }
                return(false);
            }

            if (retVal.Content.Success)
            {
                return(true);
            }
            else
            {
                if (raiseExceptionWhenNotSuccesful)
                {
                    throw new Exceptions.CannotSetAlarmStateException(retVal.Content.Error);
                }
                return(false);
            }
        }
Пример #7
0
        public async Task <IActionResult> FilterAlarm([FromBody] AlarmRequest alarmRequest)
        {
            var snmpReciverList = await this.alarmRepo.GetFilteredSNMPReceiverHistory(AlarmStatus.GetStatusCode(alarmRequest.StatusCode), alarmRequest.FromDate, alarmRequest.ToDate, alarmRequest.MaxAlarmID);

            var siteList = await this.siteRepo.GetSiteListFiltered(int.Parse(alarmRequest.Filter), alarmRequest.SiteName);

            int priority = alarmRequest.Priority.Equals("All", StringComparison.InvariantCultureIgnoreCase) ? 0 : int.Parse(alarmRequest.Priority);

            return(Ok(await SNMPHistoryMapping.DoMapping(siteList, snmpReciverList,
                                                         priority, alarmRequest.PageIndex, alarmRequest.PageSize, alarmRequest.Trap,
                                                         alarmRequest.SortField, alarmRequest.SortDirection)));
        }
Пример #8
0
        private async Task <string> OnAlarmRequestAsync(AlarmRequest alarmRequest)
        {
            if (alarmRequest == null || Helpers.IsNullOrEmpty(alarmRequest.AlarmMessage) || alarmRequest.HoursFromNow <= 0)
            {
                return("Alarm parameters are empty.");
            }

            await ProcessingSemaphore.WaitAsync().ConfigureAwait(false);

            if (Core.AlarmManager.SetAlarm(alarmRequest.HoursFromNow, alarmRequest.AlarmMessage, alarmRequest.UseTTS, alarmRequest.Repeat, alarmRequest.RepeatHours))
            {
                ProcessingSemaphore.Release();
                return($"Successfully set an alarm at {alarmRequest.HoursFromNow} hours from now.");
            }

            ProcessingSemaphore.Release();
            return("Failed to set alarm.");
        }
Пример #9
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health in async
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <returns>Alarm Response</returns>
        public async Task <AlarmResponse> AlarmAsync(AlarmRequest request)
        {
            AlarmResponse response = new AlarmResponse();

            try
            {
                response = await _maintenanceClient.AlarmAsync(request);
            }
            catch (RpcException)
            {
                ResetConnection();
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }
Пример #10
0
        /// <summary>
        ///  Alarm activates, deactivates, and queries alarms regarding cluster health
        /// </summary>
        /// <param name="request">Alarm request</param>
        /// <returns>Alarm Response</returns>
        public AlarmResponse Alarm(AlarmRequest request)
        {
            AlarmResponse response = new AlarmResponse();

            try
            {
                response = _maintenanceClient.Alarm(request);
            }
            catch (RpcException)
            {
                ResetConnection();
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }
Пример #11
0
 /// <summary>
 ///  Alarm activates, deactivates, and queries alarms regarding cluster health
 /// </summary>
 /// <param name="request">Alarm request</param>
 /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
 /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
 /// <param name="cancellationToken">An optional token for canceling the call.</param>
 /// <returns>Alarm Response</returns>
 public AlarmResponse Alarm(AlarmRequest request, Grpc.Core.Metadata headers = null, DateTime?deadline = null,
                            CancellationToken cancellationToken = default) => CallEtcd((connection) => connection._maintenanceClient
                                                                                       .Alarm(request, headers, deadline, cancellationToken));