@@ -54,13 +54,14 @@ const (
5454// FileCollector implements a collector based on local K8s API json files generated outside the KubeHound application via e.g kubectl.
5555type FileCollector struct {
5656 cfg * config.FileCollectorConfig
57- log * log.KubehoundLogger
5857 tags collectorTags
5958 clusterName string
6059}
6160
6261// NewFileCollector creates a new instance of the file collector from the provided application config.
6362func NewFileCollector (ctx context.Context , cfg * config.KubehoundConfig ) (CollectorClient , error ) {
63+ ctx = context .WithValue (ctx , log .ContextFieldComponent , FileCollectorName )
64+ l := log .Trace (ctx )
6465 if cfg .Collector .Type != config .CollectorTypeFile {
6566 return nil , fmt .Errorf ("invalid collector type in config: %s" , cfg .Collector .Type )
6667 }
@@ -69,12 +70,10 @@ func NewFileCollector(ctx context.Context, cfg *config.KubehoundConfig) (Collect
6970 return nil , errors .New ("file collector config not provided" )
7071 }
7172
72- l := log .Trace (ctx )
73- l .Info ("Creating file collector from directory" , log .String ("path" , cfg .Collector .File .Directory ))
73+ l .Info ("Creating file collector from directory" , log .String (log .FieldPathKey , cfg .Collector .File .Directory ))
7474
7575 return & FileCollector {
76- cfg : cfg .Collector .File ,
77- // log: l,
76+ cfg : cfg .Collector .File ,
7877 tags : newCollectorTags (),
7978 clusterName : cfg .Dynamic .ClusterName ,
8079 }, nil
@@ -139,6 +138,7 @@ func (c *FileCollector) streamPodsNamespace(ctx context.Context, fp string, inge
139138func (c * FileCollector ) StreamPods (ctx context.Context , ingestor PodIngestor ) error {
140139 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
141140 span .SetTag (tag .EntityTag , tag .EntityPods )
141+ l := log .Trace (ctx )
142142 var err error
143143 defer func () { span .Finish (tracer .WithError (err )) }()
144144
@@ -156,7 +156,7 @@ func (c *FileCollector) StreamPods(ctx context.Context, ingestor PodIngestor) er
156156 return nil
157157 }
158158
159- c . log . Debugf ("Streaming pods from file %s " , fp )
159+ l . Debug ("Streaming pods from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityPods ) )
160160
161161 return c .streamPodsNamespace (ctx , fp , ingestor )
162162 })
@@ -190,6 +190,7 @@ func (c *FileCollector) streamRolesNamespace(ctx context.Context, fp string, ing
190190func (c * FileCollector ) StreamRoles (ctx context.Context , ingestor RoleIngestor ) error {
191191 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
192192 span .SetTag (tag .EntityTag , tag .EntityRoles )
193+ l := log .Trace (ctx )
193194 var err error
194195 defer func () { span .Finish (tracer .WithError (err )) }()
195196
@@ -199,17 +200,17 @@ func (c *FileCollector) StreamRoles(ctx context.Context, ingestor RoleIngestor)
199200 return nil
200201 }
201202
202- f := filepath .Join (path , RolesPath )
203+ fp := filepath .Join (path , RolesPath )
203204
204205 // Check if the file exists
205- if _ , err := os .Stat (f ); os .IsNotExist (err ) {
206+ if _ , err := os .Stat (fp ); os .IsNotExist (err ) {
206207 // Skipping streaming as file does not exist (k8s type not necessary required in a namespace, for instance, an namespace can have no roles)
207208 return nil
208209 }
209210
210- c . log . Debugf ("Streaming roles from file %s " , f )
211+ l . Debug ("Streaming roles from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityRoles ) )
211212
212- return c .streamRolesNamespace (ctx , f , ingestor )
213+ return c .streamRolesNamespace (ctx , fp , ingestor )
213214 })
214215
215216 if err != nil {
@@ -241,6 +242,7 @@ func (c *FileCollector) streamRoleBindingsNamespace(ctx context.Context, fp stri
241242func (c * FileCollector ) StreamRoleBindings (ctx context.Context , ingestor RoleBindingIngestor ) error {
242243 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
243244 span .SetTag (tag .EntityTag , tag .EntityRolebindings )
245+ l := log .Trace (ctx )
244246 var err error
245247 defer func () { span .Finish (tracer .WithError (err )) }()
246248
@@ -258,7 +260,7 @@ func (c *FileCollector) StreamRoleBindings(ctx context.Context, ingestor RoleBin
258260 return nil
259261 }
260262
261- c . log . Debugf ("Streaming role bindings from file %s " , fp )
263+ l . Debug ("Streaming role bindings from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityRolebindings ) )
262264
263265 return c .streamRoleBindingsNamespace (ctx , fp , ingestor )
264266 })
@@ -292,6 +294,7 @@ func (c *FileCollector) streamEndpointsNamespace(ctx context.Context, fp string,
292294func (c * FileCollector ) StreamEndpoints (ctx context.Context , ingestor EndpointIngestor ) error {
293295 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
294296 span .SetTag (tag .EntityTag , tag .EntityEndpoints )
297+ l := log .Trace (ctx )
295298 var err error
296299 defer func () { span .Finish (tracer .WithError (err )) }()
297300
@@ -308,8 +311,7 @@ func (c *FileCollector) StreamEndpoints(ctx context.Context, ingestor EndpointIn
308311 // Skipping streaming as file does not exist (k8s type not necessary required in a namespace, for instance, an namespace can have no endpoints)
309312 return nil
310313 }
311-
312- c .log .Debugf ("Streaming endpoint slices from file %s" , fp )
314+ l .Debug ("Streaming endpoints slices from file" , log .String (log .FieldPathKey , fp ), log .String (log .FieldEntityKey , tag .EntityEndpoints ))
313315
314316 return c .streamEndpointsNamespace (ctx , fp , ingestor )
315317 })
@@ -324,11 +326,12 @@ func (c *FileCollector) StreamEndpoints(ctx context.Context, ingestor EndpointIn
324326func (c * FileCollector ) StreamNodes (ctx context.Context , ingestor NodeIngestor ) error {
325327 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
326328 span .SetTag (tag .EntityTag , tag .EntityNodes )
329+ l := log .Trace (ctx )
327330 var err error
328331 defer func () { span .Finish (tracer .WithError (err )) }()
329332
330333 fp := filepath .Join (c .cfg .Directory , NodePath )
331- c . log . Debugf ("Streaming nodes from file %s " , fp )
334+ l . Debug ("Streaming nodes from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityNodes ) )
332335
333336 list , err := readList [corev1.NodeList ](ctx , fp )
334337 if err != nil {
@@ -350,11 +353,12 @@ func (c *FileCollector) StreamNodes(ctx context.Context, ingestor NodeIngestor)
350353func (c * FileCollector ) StreamClusterRoles (ctx context.Context , ingestor ClusterRoleIngestor ) error {
351354 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
352355 span .SetTag (tag .EntityTag , tag .EntityClusterRoles )
356+ l := log .Trace (ctx )
353357 var err error
354358 defer func () { span .Finish (tracer .WithError (err )) }()
355359
356360 fp := filepath .Join (c .cfg .Directory , ClusterRolesPath )
357- c . log . Debugf ("Streaming cluster roles from file %s " , fp )
361+ l . Debug ("Streaming cluster role from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityClusterRoles ) )
358362
359363 list , err := readList [rbacv1.ClusterRoleList ](ctx , fp )
360364 if err != nil {
@@ -376,11 +380,12 @@ func (c *FileCollector) StreamClusterRoles(ctx context.Context, ingestor Cluster
376380func (c * FileCollector ) StreamClusterRoleBindings (ctx context.Context , ingestor ClusterRoleBindingIngestor ) error {
377381 span , ctx := tracer .StartSpanFromContext (ctx , span .CollectorStream , tracer .Measured ())
378382 span .SetTag (tag .EntityTag , tag .EntityClusterRolebindings )
383+ l := log .Trace (ctx )
379384 var err error
380385 defer func () { span .Finish (tracer .WithError (err )) }()
381386
382387 fp := filepath .Join (c .cfg .Directory , ClusterRoleBindingsPath )
383- c . log . Debugf ("Streaming cluster role bindings from file %s " , fp )
388+ l . Debug ("Streaming cluster role bindings from file" , log . String ( log . FieldPathKey , fp ), log . String ( log . FieldEntityKey , tag . EntityClusterRolebindings ) )
384389
385390 list , err := readList [rbacv1.ClusterRoleBindingList ](ctx , fp )
386391 if err != nil {
0 commit comments