jsonblob

package
v1.5.28 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2024 License: Apache-2.0 Imports: 14 Imported by: 2

Documentation

Overview

Package jsonblob implements a JSON-backed recording of update operations to replay later.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CommonEntry

type CommonEntry struct {
	Updater     string
	Fingerprint driver.Fingerprint
	Date        time.Time
}

CommonEntry is an embedded type that's shared between the "normal" Entry type and the on-disk JSON produced by the Store.Store method.

type Entry

type Entry struct {
	CommonEntry
	Vuln       []*claircore.Vulnerability
	Enrichment []driver.EnrichmentRecord
	// contains filtered or unexported fields
}

Entry is a record of all information needed to record a vulnerability at a later date.

type Loader

type Loader struct {
	// contains filtered or unexported fields
}

Loader is an iterator that returns a series of Entry.

Users should call *Loader.Next until it reports false, then check for errors via *Loader.Err.

func Load

func Load(ctx context.Context, r io.Reader) (*Loader, error)

Load reads in all the records serialized in the provided io.Reader.

func (*Loader) Entry

func (l *Loader) Entry() *Entry

Entry returns the latest loaded Entry.

func (*Loader) Err

func (l *Loader) Err() error

Err is the latest encountered error.

func (*Loader) Next

func (l *Loader) Next() bool

Next reports whether there's an Entry to be processed.

type Store

type Store struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

A Store buffers update operations.

Store opens files in the OS-specified "temp" directories. If updates are sufficiently large, this may need to be adjusted. See os.TempDir for how to do so.

func New

func New() (*Store, error)

New constructs an empty Store.

func (*Store) DeleteUpdateOperations

func (s *Store) DeleteUpdateOperations(context.Context, ...uuid.UUID) (int64, error)

DeleteUpdateOperations is unimplemented.

func (*Store) DeltaUpdateVulnerabilities added in v1.5.21

func (s *Store) DeltaUpdateVulnerabilities(ctx context.Context, updater string, fingerprint driver.Fingerprint, vulns []*claircore.Vulnerability, deleted []string) (uuid.UUID, error)

DeltaUpdateVulnerabilities is a noop

func (*Store) Entries

func (s *Store) Entries() map[uuid.UUID]*Entry

Entries returns a map containing all the Entries stored by calls to UpdateVulnerabilities.

It is unsafe for modification because it does not return a copy of the map.

func (*Store) GC

func (s *Store) GC(_ context.Context, _ int) (int64, error)

GC is unimplemented.

func (*Store) GetLatestUpdateRef

func (s *Store) GetLatestUpdateRef(_ context.Context, k driver.UpdateKind) (uuid.UUID, error)

GetLatestUpdateRef reports the latest update reference of any known updater.

func (*Store) GetLatestUpdateRefs

func (s *Store) GetLatestUpdateRefs(_ context.Context, k driver.UpdateKind) (map[string][]driver.UpdateOperation, error)

GetLatestUpdateRefs reports the latest update reference for every known updater.

func (*Store) GetUpdateDiff

func (s *Store) GetUpdateDiff(ctx context.Context, prev, cur uuid.UUID) (*driver.UpdateDiff, error)

GetUpdateDiff is unimplemented.

func (*Store) GetUpdateOperations

func (s *Store) GetUpdateOperations(_ context.Context, k driver.UpdateKind, us ...string) (map[string][]driver.UpdateOperation, error)

GetUpdateOperations returns a list of UpdateOperations in date descending order for the given updaters.

The returned map is keyed by Updater implementation's unique names.

If no updaters are specified, all UpdateOperations are returned.

func (*Store) Initialized added in v0.3.0

func (s *Store) Initialized(context.Context) (bool, error)

Initialized implements vulnstore.Updater.

func (*Store) RecordUpdaterSetStatus added in v1.4.3

func (s *Store) RecordUpdaterSetStatus(ctx context.Context, updaterSet string, updateTime time.Time) error

RecordUpdaterSetStatus is unimplemented.

func (*Store) RecordUpdaterStatus added in v1.4.3

func (s *Store) RecordUpdaterStatus(ctx context.Context, updaterName string, updateTime time.Time, fingerprint driver.Fingerprint, updaterError error) error

RecordUpdaterStatus is unimplemented.

func (*Store) Store

func (s *Store) Store(w io.Writer) error

Store writes out the contents of the receiver to the provided io.Writer. It's the inverse of Load.

Store may only be called once for a series of Store.UpdateVulnerabilities and Store.UpdateEnrichments calls, as it deallocates resources as it writes them.

It should be possible to call this as often as needed to flush resources to disk.

func (*Store) UpdateEnrichments added in v0.5.0

func (s *Store) UpdateEnrichments(ctx context.Context, kind string, fp driver.Fingerprint, es []driver.EnrichmentRecord) (uuid.UUID, error)

UpdateEnrichments creates a new EnrichmentUpdateOperation, inserts the provided EnrichmentRecord(s), and ensures enrichments from previous updates are not queries by clients.

func (*Store) UpdateEnrichmentsIter added in v1.5.28

func (s *Store) UpdateEnrichmentsIter(_ context.Context, _ string, _ driver.Fingerprint, _ datastore.EnrichmentIter) (uuid.UUID, error)

UpdateEnrichmentsIter is unimplemented.

func (*Store) UpdateVulnerabilities

func (s *Store) UpdateVulnerabilities(ctx context.Context, updater string, fingerprint driver.Fingerprint, vulns []*claircore.Vulnerability) (uuid.UUID, error)

UpdateVulnerabilities records all provided vulnerabilities.

func (*Store) UpdateVulnerabilitiesIter added in v1.5.28

func (s *Store) UpdateVulnerabilitiesIter(_ context.Context, _ string, _ driver.Fingerprint, _ datastore.VulnerabilityIter) (uuid.UUID, error)

UpdateVulnerabilitiesIter is unimplemented.

Notes

Bugs

  • On Linux, the disk buffering unconditionally uses what os.TempDir reports. On most systems, this will be a tmpfs, which means the contents are stored in RAM anyway. To mitigate this, set the "TMPDIR" environment variable for any process that's using this package.

  • Store.Entries reports seemingly-empty entries when populated via Store.UpdateVulnerabilities.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL