jsonblob

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Sep 8, 2026 License: Apache-2.0 Imports: 15 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

func ReturnEnrichment added in v1.6.0

func ReturnEnrichment(e *driver.EnrichmentRecord)

ReturnEnrichment can be used by callers to return driver.EnrichmentRecord objects from Loader.All iterators to a common pool.

This may take some pressure off the garbage collector.

func ReturnVulnerability added in v1.6.0

func ReturnVulnerability(v *claircore.Vulnerability)

ReturnVulnerability can be used by callers to return claircore.Vulnerability objects from Loader.All iterators to a common pool.

This may take some pressure off the garbage collector.

Types

type CommonEntry

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

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 over serialized records.

Users should consume the Loader.All iterator, then check for errors via Loader.Err.

func Load deprecated

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

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

Deprecated: This just calls NewLoader.

func NewLoader added in v1.6.0

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

NewLoader returns a loader configured to read the records serialized in the provided io.Reader.

func (*Loader) All added in v1.6.0

All returns an iterator-of-iterators yielding all entries in the Loader.

The inner iterator returns zero or one of the two values. If both pointers are nil, the caller must check Loader.Err.

func (*Loader) Entry deprecated

func (l *Loader) Entry() *Entry

Entry returns the latest loaded Entry.

Deprecated: Use the Loader.All iterator.

func (*Loader) Err

func (l *Loader) Err() error

Err is the latest encountered error.

func (*Loader) Next deprecated

func (l *Loader) Next() bool

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

Deprecated: Use the Loader.All iterator.

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 just calls UpdateVulnerabilities. In the jsonblob flow it is assumed that we're always starting from zero. Note: deleted is ignored.

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