cloudfoundry/cf-k8s-controllers

View on GitHub
api/presenter/log.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package presenter

import (
    "code.cloudfoundry.org/go-loggregator/v8/rpc/loggregator_v2"
    "code.cloudfoundry.org/korifi/api/repositories"
)

type LogCacheReadResponse struct {
    Envelopes LogCacheReadResponseEnvelopes `json:"envelopes"`
}

type LogCacheReadResponseEnvelopes struct {
    Batch []LogCacheReadResponseBatch `json:"batch"`
}

type LogCacheReadResponseBatch struct {
    Timestamp int64                   `json:"timestamp"`
    Log       LogCacheReadResponseLog `json:"log"`
    Tags      map[string]string       `json:"tags,omitempty"`
}

type LogCacheReadResponseLog struct {
    Payload []byte                  `json:"payload"`
    Type    loggregator_v2.Log_Type `json:"type"`
}

func ForLogs(logRecords []repositories.LogRecord) LogCacheReadResponse {
    envelopes := make([]LogCacheReadResponseBatch, 0, len(logRecords))
    for _, logRecord := range logRecords {
        batch := LogCacheReadResponseBatch{
            Timestamp: logRecord.Timestamp,
            Log: LogCacheReadResponseLog{
                Payload: []byte(logRecord.Message),
                Type:    loggregator_v2.Log_OUT,
            },
            Tags: logRecord.Tags,
        }

        envelopes = append(envelopes, batch)
    }

    return LogCacheReadResponse{
        Envelopes: LogCacheReadResponseEnvelopes{
            Batch: envelopes,
        },
    }
}