예제 #1
0
        protected override async Task <Unit> SendImplementation(SendDockerRunParamsRequest request, CancellationToken cancellation)
        {
            var collection = await _collectionFactory.Get <SendDockerRunParamsRequest>(cancellation);

            await collection.InsertOneAsync(request, GetInsertOneOptions.Value, cancellation);

            return(Unit.Value);
        }
        protected override async Task <DateTimeOffset> GetLatestByServiceAndContainerNamesImplementation(
            GetLatestByServiceAndContainerNamesRequest request,
            CancellationToken cancellation)
        {
            var collection = await _collectionFactory.Get <LogEntry>(cancellation);

            var filter =
                Builders <LogEntry> .Filter.Where(x =>
                                                  x.ServiceName == request.ServiceName &&
                                                  x.ContainerName == request.ContainerName);

            var cursor = await collection.FindAsync(filter, GetFindOptions.Value, cancellation);

            var entry = await cursor.FirstOrDefaultAsync(cancellation);

            return(entry == null ? default : entry.EventDate);
        }
        public override async Task <HealthCheckResponse> Handle(HealthCheckRequest request, CancellationToken cancellationToken)
        {
            try
            {
                IMongoCollection <LogEntry> logEntries = await _collectionFactory.Get <LogEntry>(cancellationToken);

                var response =
                    await
                    _retryProvider.RetryOn <MongoConnectionException, long>(
                        x => true,
                        x => false,
                        () => logEntries.CountDocumentsAsync(new FilterDefinitionBuilder <LogEntry>().Empty));

                return(Healthy(Engine.MongoDb.Name));
            }
            catch (Exception ex)
            {
                return(Unhealthy(Engine.MongoDb.Name, ex.ToString()));
            }
        }