mainframe.models.orm

Attributes

Classes

Base

Mixin class to indicate when mapping this class, also convert it to be

Status

Package status.

Scan

The scans.

OpenGrepScan

An isolated OpenGrep shadow scan for one canonical package scan.

DownloadURL

Download URLs.

Rule

YARA rules.

AlertingConfiguration

Durable alerting configuration shared by Mainframe clients.

Suppression

A durable package-version alert suppression.

Module Contents

class mainframe.models.orm.Base[source]

Bases: sqlalchemy.orm.MappedAsDataclass, sqlalchemy.orm.DeclarativeBase

Mixin class to indicate when mapping this class, also convert it to be a dataclass.

See also

orm_declarative_native_dataclasses - complete background on SQLAlchemy native dataclass mapping

Added in version 2.0.

class mainframe.models.orm.Status(*args, **kwds)[source]

Bases: enum.Enum

Package status.

QUEUED - Waiting to be sent to a worker PENDING - Waiting for a response from a worker FINISHED - Verdict received from worker FAILED - Something went wrong with the client when scanning this package

QUEUED = 'queued'[source]
PENDING = 'pending'[source]
FINISHED = 'finished'[source]
FAILED = 'failed'[source]
mainframe.models.orm.package_rules[source]
class mainframe.models.orm.Scan[source]

Bases: Base

The scans.

__tablename__: str = 'scans'[source]
__table_args__[source]
scan_id: sqlalchemy.orm.Mapped[uuid.UUID][source]
name: sqlalchemy.orm.Mapped[str][source]
version: sqlalchemy.orm.Mapped[str][source]
status: sqlalchemy.orm.Mapped[Status][source]
score: sqlalchemy.orm.Mapped[int | None][source]
inspector_url: sqlalchemy.orm.Mapped[str | None][source]
rules: sqlalchemy.orm.Mapped[list[Rule]][source]
download_urls: sqlalchemy.orm.Mapped[list[DownloadURL]][source]
queued_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
queued_by: sqlalchemy.orm.Mapped[str][source]
pending_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
pending_by: sqlalchemy.orm.Mapped[str | None][source]
attempt_count: sqlalchemy.orm.Mapped[int][source]
assignment_id: sqlalchemy.orm.Mapped[uuid.UUID | None][source]
dead_lettered_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
finished_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
finished_by: sqlalchemy.orm.Mapped[str | None][source]
reported_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
reported_by: sqlalchemy.orm.Mapped[str | None][source]
report_summary: sqlalchemy.orm.Mapped[str | None][source]
fail_reason: sqlalchemy.orm.Mapped[str | None][source]
commit_hash: sqlalchemy.orm.Mapped[str | None][source]
class mainframe.models.orm.OpenGrepScan[source]

Bases: Base

An isolated OpenGrep shadow scan for one canonical package scan.

__tablename__: str = 'opengrep_scans'[source]
__table_args__[source]
scan_id: sqlalchemy.orm.Mapped[uuid.UUID][source]
status: sqlalchemy.orm.Mapped[Status][source]
alerted_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
queued_at: sqlalchemy.orm.Mapped[datetime.datetime][source]
queued_by: sqlalchemy.orm.Mapped[str][source]
pending_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
pending_by: sqlalchemy.orm.Mapped[str | None][source]
attempt_count: sqlalchemy.orm.Mapped[int][source]
assignment_id: sqlalchemy.orm.Mapped[uuid.UUID | None][source]
dead_lettered_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
finished_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
finished_by: sqlalchemy.orm.Mapped[str | None][source]
fail_reason: sqlalchemy.orm.Mapped[str | None][source]
commit_hash: sqlalchemy.orm.Mapped[str | None][source]
duration_ms: sqlalchemy.orm.Mapped[int | None][source]
findings: sqlalchemy.orm.Mapped[list[dict[str, Any]]][source]
publication_id: sqlalchemy.orm.Mapped[uuid.UUID | None][source]
publication_claimed_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
discord_alert_message_id: sqlalchemy.orm.Mapped[int | None][source]
discord_message_id: sqlalchemy.orm.Mapped[int | None][source]
discord_thread_id: sqlalchemy.orm.Mapped[int | None][source]
published_chunks: sqlalchemy.orm.Mapped[int][source]
published_at: sqlalchemy.orm.Mapped[datetime.datetime | None][source]
class mainframe.models.orm.DownloadURL[source]

Bases: Base

Download URLs.

__tablename__: str = 'download_urls'[source]
id: sqlalchemy.orm.Mapped[uuid.UUID][source]
scan_id: sqlalchemy.orm.Mapped[str][source]
url: sqlalchemy.orm.Mapped[str][source]
class mainframe.models.orm.Rule[source]

Bases: Base

YARA rules.

__tablename__: str = 'rules'[source]
id: sqlalchemy.orm.Mapped[uuid.UUID][source]
name: sqlalchemy.orm.Mapped[str][source]
class mainframe.models.orm.AlertingConfiguration[source]

Bases: Base

Durable alerting configuration shared by Mainframe clients.

__tablename__: str = 'alerting_configuration'[source]
__table_args__[source]
id: sqlalchemy.orm.Mapped[int][source]
production_score_threshold: sqlalchemy.orm.Mapped[int][source]
updated_at: sqlalchemy.orm.Mapped[datetime.datetime][source]
updated_by: sqlalchemy.orm.Mapped[str][source]
class mainframe.models.orm.Suppression[source]

Bases: Base

A durable package-version alert suppression.

__tablename__: str = 'suppressions'[source]
__table_args__[source]
suppression_id: sqlalchemy.orm.Mapped[uuid.UUID][source]
package_name: sqlalchemy.orm.Mapped[str][source]
package_version: sqlalchemy.orm.Mapped[str][source]
created_by: sqlalchemy.orm.Mapped[str][source]
updated_by: sqlalchemy.orm.Mapped[str][source]
rules: sqlalchemy.orm.Mapped[list[str] | None][source]
created_at: sqlalchemy.orm.Mapped[datetime.datetime][source]
updated_at: sqlalchemy.orm.Mapped[datetime.datetime][source]