add missing logs to kolide service (#843)

Add logging middleware for more of the kolide Service interfaces. 
This PR was created through code generation, however it's not likely that the logging middleware can all be continuously regenerated - we're likely to want to add method specific key/values to individual methods. Moving forward, logging middleware should be maintained when changes are made to a service interface method.
This commit is contained in:
Victor Vrantchan 2017-01-09 23:40:21 -05:00 committed by GitHub
parent 92f755e0af
commit 71def50756
12 changed files with 780 additions and 32 deletions

View file

@ -41,10 +41,10 @@ type HostStore interface {
}
type HostService interface {
ListHosts(ctx context.Context, opt ListOptions) ([]*Host, error)
GetHost(ctx context.Context, id uint) (*Host, error)
GetHostSummary(ctx context.Context) (*HostSummary, error)
DeleteHost(ctx context.Context, id uint) error
ListHosts(ctx context.Context, opt ListOptions) (hosts []*Host, err error)
GetHost(ctx context.Context, id uint) (host *Host, err error)
GetHostSummary(ctx context.Context) (summary *HostSummary, err error)
DeleteHost(ctx context.Context, id uint) (err error)
}
type Host struct {

View file

@ -36,10 +36,10 @@ type LabelStore interface {
}
type LabelService interface {
ListLabels(ctx context.Context, opt ListOptions) ([]*Label, error)
GetLabel(ctx context.Context, id uint) (*Label, error)
NewLabel(ctx context.Context, p LabelPayload) (*Label, error)
DeleteLabel(ctx context.Context, id uint) error
ListLabels(ctx context.Context, opt ListOptions) (labels []*Label, err error)
GetLabel(ctx context.Context, id uint) (label *Label, err error)
NewLabel(ctx context.Context, p LabelPayload) (label *Label, err error)
DeleteLabel(ctx context.Context, id uint) (err error)
}
type LabelPayload struct {

View file

@ -5,13 +5,13 @@ import (
)
type OsqueryService interface {
EnrollAgent(ctx context.Context, enrollSecret, hostIdentifier string) (string, error)
AuthenticateHost(ctx context.Context, nodeKey string) (*Host, error)
GetClientConfig(ctx context.Context) (*OsqueryConfig, error)
GetDistributedQueries(ctx context.Context) (map[string]string, error)
SubmitDistributedQueryResults(ctx context.Context, results OsqueryDistributedQueryResults) error
SubmitStatusLogs(ctx context.Context, logs []OsqueryStatusLog) error
SubmitResultLogs(ctx context.Context, logs []OsqueryResultLog) error
EnrollAgent(ctx context.Context, enrollSecret, hostIdentifier string) (nodeKey string, err error)
AuthenticateHost(ctx context.Context, nodeKey string) (host *Host, err error)
GetClientConfig(ctx context.Context) (config *OsqueryConfig, err error)
GetDistributedQueries(ctx context.Context) (queries map[string]string, err error)
SubmitDistributedQueryResults(ctx context.Context, results OsqueryDistributedQueryResults) (err error)
SubmitStatusLogs(ctx context.Context, logs []OsqueryStatusLog) (err error)
SubmitResultLogs(ctx context.Context, logs []OsqueryResultLog) (err error)
}
type OsqueryDistributedQueryResults map[string][]map[string]string

View file

@ -25,22 +25,22 @@ type PackStore interface {
type PackService interface {
// Pack methods
ListPacks(ctx context.Context, opt ListOptions) ([]*Pack, error)
GetPack(ctx context.Context, id uint) (*Pack, error)
NewPack(ctx context.Context, p PackPayload) (*Pack, error)
ModifyPack(ctx context.Context, id uint, p PackPayload) (*Pack, error)
DeletePack(ctx context.Context, id uint) error
ListPacks(ctx context.Context, opt ListOptions) (packs []*Pack, err error)
GetPack(ctx context.Context, id uint) (pack *Pack, err error)
NewPack(ctx context.Context, p PackPayload) (pack *Pack, err error)
ModifyPack(ctx context.Context, id uint, p PackPayload) (pack *Pack, err error)
DeletePack(ctx context.Context, id uint) (err error)
// Modifying the labels for packs
AddLabelToPack(ctx context.Context, lid, pid uint) error
RemoveLabelFromPack(ctx context.Context, lid, pid uint) error
ListLabelsForPack(ctx context.Context, pid uint) ([]*Label, error)
AddLabelToPack(ctx context.Context, lid, pid uint) (err error)
RemoveLabelFromPack(ctx context.Context, lid, pid uint) (err error)
ListLabelsForPack(ctx context.Context, pid uint) (labels []*Label, err error)
// Modifying the hosts for packs
AddHostToPack(ctx context.Context, hid, pid uint) error
RemoveHostFromPack(ctx context.Context, hid, pid uint) error
ListPacksForHost(ctx context.Context, hid uint) ([]*Pack, error)
ListHostsInPack(ctx context.Context, pid uint, opt ListOptions) ([]*Host, error)
AddHostToPack(ctx context.Context, hid, pid uint) (err error)
RemoveHostFromPack(ctx context.Context, hid, pid uint) (err error)
ListPacksForHost(ctx context.Context, hid uint) (packs []*Pack, err error)
ListHostsInPack(ctx context.Context, pid uint, opt ListOptions) (hosts []*Host, err error)
}
type Pack struct {

View file

@ -13,11 +13,11 @@ type ScheduledQueryStore interface {
}
type ScheduledQueryService interface {
GetScheduledQuery(ctx context.Context, id uint) (*ScheduledQuery, error)
GetScheduledQueriesInPack(ctx context.Context, id uint, opts ListOptions) ([]*ScheduledQuery, error)
ScheduleQuery(ctx context.Context, sq *ScheduledQuery) (*ScheduledQuery, error)
DeleteScheduledQuery(ctx context.Context, id uint) error
ModifyScheduledQuery(ctx context.Context, sq *ScheduledQuery) (*ScheduledQuery, error)
GetScheduledQuery(ctx context.Context, id uint) (query *ScheduledQuery, err error)
GetScheduledQueriesInPack(ctx context.Context, id uint, opts ListOptions) (queries []*ScheduledQuery, err error)
ScheduleQuery(ctx context.Context, sq *ScheduledQuery) (query *ScheduledQuery, err error)
DeleteScheduledQuery(ctx context.Context, id uint) (err error)
ModifyScheduledQuery(ctx context.Context, sq *ScheduledQuery) (query *ScheduledQuery, err error)
}
type ScheduledQuery struct {

View file

@ -0,0 +1,62 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) NewAppConfig(ctx context.Context, p kolide.AppConfigPayload) (*kolide.AppConfig, error) {
var (
info *kolide.AppConfig
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "NewAppConfig",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
info, err = mw.Service.NewAppConfig(ctx, p)
return info, err
}
func (mw loggingMiddleware) AppConfig(ctx context.Context) (*kolide.AppConfig, error) {
var (
info *kolide.AppConfig
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "AppConfig",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
info, err = mw.Service.AppConfig(ctx)
return info, err
}
func (mw loggingMiddleware) ModifyAppConfig(ctx context.Context, p kolide.AppConfigPayload) (*kolide.AppConfig, error) {
var (
info *kolide.AppConfig
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ModifyAppConfig",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
info, err = mw.Service.ModifyAppConfig(ctx, p)
return info, err
}

View file

@ -0,0 +1,79 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) ListHosts(ctx context.Context, opt kolide.ListOptions) ([]*kolide.Host, error) {
var (
hosts []*kolide.Host
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListHosts",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
hosts, err = mw.Service.ListHosts(ctx, opt)
return hosts, err
}
func (mw loggingMiddleware) GetHost(ctx context.Context, id uint) (*kolide.Host, error) {
var (
host *kolide.Host
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetHost",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
host, err = mw.Service.GetHost(ctx, id)
return host, err
}
func (mw loggingMiddleware) GetHostSummary(ctx context.Context) (*kolide.HostSummary, error) {
var (
summary *kolide.HostSummary
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetHostSummary",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
summary, err = mw.Service.GetHostSummary(ctx)
return summary, err
}
func (mw loggingMiddleware) DeleteHost(ctx context.Context, id uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "DeleteHost",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.DeleteHost(ctx, id)
return err
}

View file

@ -0,0 +1,79 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) ListLabels(ctx context.Context, opt kolide.ListOptions) ([]*kolide.Label, error) {
var (
labels []*kolide.Label
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListLabels",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
labels, err = mw.Service.ListLabels(ctx, opt)
return labels, err
}
func (mw loggingMiddleware) GetLabel(ctx context.Context, id uint) (*kolide.Label, error) {
var (
label *kolide.Label
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetLabel",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
label, err = mw.Service.GetLabel(ctx, id)
return label, err
}
func (mw loggingMiddleware) NewLabel(ctx context.Context, p kolide.LabelPayload) (*kolide.Label, error) {
var (
label *kolide.Label
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "NewLabel",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
label, err = mw.Service.NewLabel(ctx, p)
return label, err
}
func (mw loggingMiddleware) DeleteLabel(ctx context.Context, id uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "DeleteLabel",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.DeleteLabel(ctx, id)
return err
}

View file

@ -0,0 +1,131 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) EnrollAgent(ctx context.Context, enrollSecret string, hostIdentifier string) (string, error) {
var (
nodeKey string
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "EnrollAgent",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
nodeKey, err = mw.Service.EnrollAgent(ctx, enrollSecret, hostIdentifier)
return nodeKey, err
}
func (mw loggingMiddleware) AuthenticateHost(ctx context.Context, nodeKey string) (*kolide.Host, error) {
var (
host *kolide.Host
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "AuthenticateHost",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
host, err = mw.Service.AuthenticateHost(ctx, nodeKey)
return host, err
}
func (mw loggingMiddleware) GetClientConfig(ctx context.Context) (*kolide.OsqueryConfig, error) {
var (
config *kolide.OsqueryConfig
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetClientConfig",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
config, err = mw.Service.GetClientConfig(ctx)
return config, err
}
func (mw loggingMiddleware) GetDistributedQueries(ctx context.Context) (map[string]string, error) {
var (
queries map[string]string
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetDistributedQueries",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
queries, err = mw.Service.GetDistributedQueries(ctx)
return queries, err
}
func (mw loggingMiddleware) SubmitDistributedQueryResults(ctx context.Context, results kolide.OsqueryDistributedQueryResults) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "SubmitDistributedQueryResults",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.SubmitDistributedQueryResults(ctx, results)
return err
}
func (mw loggingMiddleware) SubmitStatusLogs(ctx context.Context, logs []kolide.OsqueryStatusLog) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "SubmitStatusLogs",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.SubmitStatusLogs(ctx, logs)
return err
}
func (mw loggingMiddleware) SubmitResultLogs(ctx context.Context, logs []kolide.OsqueryResultLog) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "SubmitResultLogs",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.SubmitResultLogs(ctx, logs)
return err
}

View file

@ -0,0 +1,219 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) ListPacks(ctx context.Context, opt kolide.ListOptions) ([]*kolide.Pack, error) {
var (
packs []*kolide.Pack
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListPacks",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
packs, err = mw.Service.ListPacks(ctx, opt)
return packs, err
}
func (mw loggingMiddleware) GetPack(ctx context.Context, id uint) (*kolide.Pack, error) {
var (
pack *kolide.Pack
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
pack, err = mw.Service.GetPack(ctx, id)
return pack, err
}
func (mw loggingMiddleware) NewPack(ctx context.Context, p kolide.PackPayload) (*kolide.Pack, error) {
var (
pack *kolide.Pack
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "NewPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
pack, err = mw.Service.NewPack(ctx, p)
return pack, err
}
func (mw loggingMiddleware) ModifyPack(ctx context.Context, id uint, p kolide.PackPayload) (*kolide.Pack, error) {
var (
pack *kolide.Pack
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ModifyPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
pack, err = mw.Service.ModifyPack(ctx, id, p)
return pack, err
}
func (mw loggingMiddleware) DeletePack(ctx context.Context, id uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "DeletePack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.DeletePack(ctx, id)
return err
}
func (mw loggingMiddleware) AddLabelToPack(ctx context.Context, lid uint, pid uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "AddLabelToPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.AddLabelToPack(ctx, lid, pid)
return err
}
func (mw loggingMiddleware) RemoveLabelFromPack(ctx context.Context, lid uint, pid uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "RemoveLabelFromPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.RemoveLabelFromPack(ctx, lid, pid)
return err
}
func (mw loggingMiddleware) ListLabelsForPack(ctx context.Context, pid uint) ([]*kolide.Label, error) {
var (
labels []*kolide.Label
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListLabelsForPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
labels, err = mw.Service.ListLabelsForPack(ctx, pid)
return labels, err
}
func (mw loggingMiddleware) AddHostToPack(ctx context.Context, hid uint, pid uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "AddHostToPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.AddHostToPack(ctx, hid, pid)
return err
}
func (mw loggingMiddleware) RemoveHostFromPack(ctx context.Context, hid uint, pid uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "RemoveHostFromPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.RemoveHostFromPack(ctx, hid, pid)
return err
}
func (mw loggingMiddleware) ListPacksForHost(ctx context.Context, hid uint) ([]*kolide.Pack, error) {
var (
packs []*kolide.Pack
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListPacksForHost",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
packs, err = mw.Service.ListPacksForHost(ctx, hid)
return packs, err
}
func (mw loggingMiddleware) ListHostsInPack(ctx context.Context, pid uint, opt kolide.ListOptions) ([]*kolide.Host, error) {
var (
hosts []*kolide.Host
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListHostsInPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
hosts, err = mw.Service.ListHostsInPack(ctx, pid, opt)
return hosts, err
}

View file

@ -0,0 +1,97 @@
package service
import (
"time"
"github.com/kolide/kolide-ose/server/kolide"
"golang.org/x/net/context"
)
func (mw loggingMiddleware) GetScheduledQuery(ctx context.Context, id uint) (*kolide.ScheduledQuery, error) {
var (
query *kolide.ScheduledQuery
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetScheduledQuery",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
query, err = mw.Service.GetScheduledQuery(ctx, id)
return query, err
}
func (mw loggingMiddleware) GetScheduledQueriesInPack(ctx context.Context, id uint, opts kolide.ListOptions) ([]*kolide.ScheduledQuery, error) {
var (
queries []*kolide.ScheduledQuery
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "GetScheduledQueriesInPack",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
queries, err = mw.Service.GetScheduledQueriesInPack(ctx, id, opts)
return queries, err
}
func (mw loggingMiddleware) ScheduleQuery(ctx context.Context, sq *kolide.ScheduledQuery) (*kolide.ScheduledQuery, error) {
var (
query *kolide.ScheduledQuery
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ScheduleQuery",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
query, err = mw.Service.ScheduleQuery(ctx, sq)
return query, err
}
func (mw loggingMiddleware) DeleteScheduledQuery(ctx context.Context, id uint) error {
var (
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "DeleteScheduledQuery",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
err = mw.Service.DeleteScheduledQuery(ctx, id)
return err
}
func (mw loggingMiddleware) ModifyScheduledQuery(ctx context.Context, sq *kolide.ScheduledQuery) (*kolide.ScheduledQuery, error) {
var (
query *kolide.ScheduledQuery
err error
)
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ModifyScheduledQuery",
"err", err,
"took", time.Since(begin),
)
}(time.Now())
query, err = mw.Service.ModifyScheduledQuery(ctx, sq)
return query, err
}

View file

@ -8,6 +8,87 @@ import (
"golang.org/x/net/context"
)
func (mw loggingMiddleware) NewAdminCreatedUser(ctx context.Context, p kolide.UserPayload) (*kolide.User, error) {
var (
user *kolide.User
err error
username = "none"
loggedInUser = "unauthenticated"
)
vc, ok := viewer.FromContext(ctx)
if ok {
loggedInUser = vc.Username()
}
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "NewAdminCreatedUser",
"user", username,
"created_by", loggedInUser,
"err", err,
"took", time.Since(begin),
)
}(time.Now())
user, err = mw.Service.NewAdminCreatedUser(ctx, p)
if user != nil {
username = user.Username
}
return user, err
}
func (mw loggingMiddleware) ListUsers(ctx context.Context, opt kolide.ListOptions) ([]*kolide.User, error) {
var (
users []*kolide.User
err error
username = "none"
)
vc, ok := viewer.FromContext(ctx)
if ok {
username = vc.Username()
}
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "ListUsers",
"user", username,
"err", err,
"took", time.Since(begin),
)
}(time.Now())
users, err = mw.Service.ListUsers(ctx, opt)
return users, err
}
func (mw loggingMiddleware) RequirePasswordReset(ctx context.Context, uid uint, require bool) (*kolide.User, error) {
var (
user *kolide.User
err error
username = "none"
)
vc, ok := viewer.FromContext(ctx)
if ok {
username = vc.Username()
}
defer func(begin time.Time) {
_ = mw.logger.Log(
"method", "RequirePasswordReset",
"user", username,
"err", err,
"took", time.Since(begin),
)
}(time.Now())
user, err = mw.Service.RequirePasswordReset(ctx, uid, require)
return user, err
}
func (mw loggingMiddleware) NewUser(ctx context.Context, p kolide.UserPayload) (*kolide.User, error) {
var (
user *kolide.User