archivebox.machine.models

Module Contents

Classes

MachineManager

Machine

Audit log entry for a physical machine that was used to do archiving.

NetworkInterfaceManager

NetworkInterface

Audit log entry for a physical network interface / internet connection that was used to do archiving.

InstalledBinaryManager

InstalledBinary

ProcessManager

ProcessQuerySet

Enhanced QuerySet for Process model, usage: Process.objects.queued() -> QuerySet[Process] [Process(pid=None, returncode=None), Process(pid=None, returncode=None)] Process.objects.running() -> QuerySet[Process] [Process(pid=123, returncode=None), Process(pid=456, returncode=None)] Process.objects.exited() -> QuerySet[Process] [Process(pid=789, returncode=0), Process(pid=101, returncode=1)] Process.objects.running().pids() -> [456] Process.objects.kill() -> 1

Process

Functions

spawn_process

Data

_CURRENT_MACHINE

_CURRENT_INTERFACE

_CURRENT_BINARIES

MACHINE_RECHECK_INTERVAL

NETWORK_INTERFACE_RECHECK_INTERVAL

INSTALLED_BINARY_RECHECK_INTERVAL

API

archivebox.machine.models._CURRENT_MACHINE[source]

None

archivebox.machine.models._CURRENT_INTERFACE[source]

None

archivebox.machine.models._CURRENT_BINARIES[source]

None

archivebox.machine.models.MACHINE_RECHECK_INTERVAL[source]

None

archivebox.machine.models.NETWORK_INTERFACE_RECHECK_INTERVAL[source]

None

archivebox.machine.models.INSTALLED_BINARY_RECHECK_INTERVAL[source]

None

class archivebox.machine.models.MachineManager[source]

Bases: django.db.models.Manager

current() archivebox.machine.models.Machine[source]
class archivebox.machine.models.Machine(*args: Any, **kwargs: Any)[source]

Bases: archivebox.base_models.models.ABIDModel, archivebox.base_models.models.ModelWithHealthStats

Audit log entry for a physical machine that was used to do archiving.

Initialization

Overriden init method ensures we have a stable creation timestamp that fields can use within initialization code pre-saving to DB.

abid_prefix[source]

‘mcn_’

abid_ts_src[source]

‘self.created_at’

abid_uri_src[source]

‘self.guid’

abid_subtype_src[source]

‘“01”’

abid_rand_src[source]

self.id

abid_drift_allowed[source]

False

read_only_fields[source]

(‘id’, ‘abid’, ‘created_at’, ‘guid’, ‘hw_in_docker’, ‘hw_in_vm’, ‘hw_manufacturer’, ‘hw_product’, ‘h…

id[source]

‘UUIDField(…)’

abid[source]

‘ABIDField(…)’

created_at[source]

‘AutoDateTimeField(…)’

modified_at[source]

‘DateTimeField(…)’

guid[source]

‘CharField(…)’

hostname[source]

‘CharField(…)’

hw_in_docker[source]

‘BooleanField(…)’

hw_in_vm[source]

‘BooleanField(…)’

hw_manufacturer[source]

‘CharField(…)’

hw_product[source]

‘CharField(…)’

hw_uuid[source]

‘CharField(…)’

os_arch[source]

‘CharField(…)’

os_family[source]

‘CharField(…)’

os_platform[source]

‘CharField(…)’

os_release[source]

‘CharField(…)’

os_kernel[source]

‘CharField(…)’

stats[source]

‘JSONField(…)’

objects: archivebox.machine.models.MachineManager[source]

‘MachineManager(…)’

networkinterface_set: django.db.models.Manager[NetworkInterface][source]

None

classmethod current() archivebox.machine.models.Machine[source]

Get the current machine that ArchiveBox is running on.

class archivebox.machine.models.NetworkInterfaceManager[source]

Bases: django.db.models.Manager

current() archivebox.machine.models.NetworkInterface[source]
class archivebox.machine.models.NetworkInterface(*args: Any, **kwargs: Any)[source]

Bases: archivebox.base_models.models.ABIDModel, archivebox.base_models.models.ModelWithHealthStats

Audit log entry for a physical network interface / internet connection that was used to do archiving.

Initialization

Overriden init method ensures we have a stable creation timestamp that fields can use within initialization code pre-saving to DB.

abid_prefix[source]

‘net_’

abid_ts_src[source]

‘self.machine.created_at’

abid_uri_src[source]

‘self.machine.guid’

abid_subtype_src[source]

‘self.iface’

abid_rand_src[source]

self.id

abid_drift_allowed[source]

False

read_only_fields[source]

(‘id’, ‘abid’, ‘created_at’, ‘machine’, ‘mac_address’, ‘ip_public’, ‘ip_local’, ‘dns_server’)

id[source]

‘UUIDField(…)’

abid[source]

‘ABIDField(…)’

created_at[source]

‘AutoDateTimeField(…)’

modified_at[source]

‘DateTimeField(…)’

machine[source]

‘ForeignKey(…)’

mac_address[source]

‘CharField(…)’

ip_public[source]

‘GenericIPAddressField(…)’

ip_local[source]

‘GenericIPAddressField(…)’

dns_server[source]

‘GenericIPAddressField(…)’

hostname[source]

‘CharField(…)’

iface[source]

‘CharField(…)’

isp[source]

‘CharField(…)’

city[source]

‘CharField(…)’

region[source]

‘CharField(…)’

country[source]

‘CharField(…)’

objects: archivebox.machine.models.NetworkInterfaceManager[source]

‘NetworkInterfaceManager(…)’

class Meta[source]
unique_together[source]

((‘machine’, ‘ip_public’, ‘ip_local’, ‘mac_address’, ‘dns_server’),)

classmethod current() archivebox.machine.models.NetworkInterface[source]

Get the current network interface for the current machine.

class archivebox.machine.models.InstalledBinaryManager[source]

Bases: django.db.models.Manager

get_from_db_or_cache(binary: abx_pkg.Binary) archivebox.machine.models.InstalledBinary[source]

Get or create an InstalledBinary record for a Binary on the local machine

class archivebox.machine.models.InstalledBinary(*args: Any, **kwargs: Any)[source]

Bases: archivebox.base_models.models.ABIDModel, archivebox.base_models.models.ModelWithHealthStats

abid_prefix[source]

‘bin_’

abid_ts_src[source]

‘self.machine.created_at’

abid_uri_src[source]

‘self.machine.guid’

abid_subtype_src[source]

‘self.binprovider’

abid_rand_src[source]

self.id

abid_drift_allowed[source]

False

read_only_fields[source]

(‘id’, ‘abid’, ‘created_at’, ‘machine’, ‘name’, ‘binprovider’, ‘abspath’, ‘version’, ‘sha256’)

id[source]

‘UUIDField(…)’

abid[source]

‘ABIDField(…)’

created_at[source]

‘AutoDateTimeField(…)’

modified_at[source]

‘DateTimeField(…)’

machine[source]

‘ForeignKey(…)’

name[source]

‘CharField(…)’

binprovider[source]

‘CharField(…)’

abspath[source]

‘CharField(…)’

version[source]

‘CharField(…)’

sha256[source]

‘CharField(…)’

objects: archivebox.machine.models.InstalledBinaryManager[source]

‘InstalledBinaryManager(…)’

class Meta[source]
verbose_name[source]

‘Installed Binary’

verbose_name_plural[source]

‘Installed Binaries’

unique_together[source]

((‘machine’, ‘name’, ‘abspath’, ‘version’, ‘sha256’),)

__str__() str[source]
clean(*args, **kwargs) None[source]
BINARY() abx_pkg.Binary[source]
BINPROVIDER() abx_pkg.BinProvider[source]
load_from_db() abx_pkg.Binary[source]
load_fresh() abx_pkg.Binary[source]
archivebox.machine.models.spawn_process(proc_id: str)[source]
class archivebox.machine.models.ProcessManager[source]

Bases: django.db.models.Manager

class archivebox.machine.models.ProcessQuerySet[source]

Bases: django.db.models.QuerySet

Enhanced QuerySet for Process model, usage: Process.objects.queued() -> QuerySet[Process] [Process(pid=None, returncode=None), Process(pid=None, returncode=None)] Process.objects.running() -> QuerySet[Process] [Process(pid=123, returncode=None), Process(pid=456, returncode=None)] Process.objects.exited() -> QuerySet[Process] [Process(pid=789, returncode=0), Process(pid=101, returncode=1)] Process.objects.running().pids() -> [456] Process.objects.kill() -> 1

queued()[source]
running()[source]
exited()[source]
kill()[source]
pids()[source]
class archivebox.machine.models.Process(*args: Any, **kwargs: Any)[source]

Bases: archivebox.base_models.models.ABIDModel

abid_prefix[source]

‘pid_’

abid_ts_src[source]

‘self.created_at’

abid_uri_src[source]

‘self.cmd’

abid_subtype_src[source]

‘self.actor_type or “00”’

abid_rand_src[source]

self.id

abid_drift_allowed[source]

False

read_only_fields[source]

(‘id’, ‘abid’, ‘created_at’, ‘cmd’, ‘cwd’, ‘actor_type’, ‘timeout’)

id[source]

‘UUIDField(…)’

abid[source]

‘ABIDField(…)’

cmd[source]

‘JSONField(…)’

cwd[source]

‘CharField(…)’

actor_type[source]

‘CharField(…)’

timeout[source]

‘PositiveIntegerField(…)’

created_at[source]

‘DateTimeField(…)’

modified_at[source]

‘DateTimeField(…)’

machine[source]

‘ForeignKey(…)’

pid[source]

‘IntegerField(…)’

launched_at[source]

‘DateTimeField(…)’

finished_at[source]

‘DateTimeField(…)’

returncode[source]

‘IntegerField(…)’

stdout[source]

‘TextField(…)’

stderr[source]

‘TextField(…)’

machine_id: str[source]

None

emitted_events: django.db.models.RelatedManager[Event][source]

None

claimed_events: django.db.models.RelatedManager[Event][source]

None

objects: archivebox.machine.models.ProcessManager[source]

‘(…)’

classmethod current() archivebox.machine.models.Process[source]
classmethod create_and_fork(**kwargs)[source]
fork()[source]
spawn()[source]
kill()[source]
property is_pending[source]
property is_running[source]
property is_failed[source]
property is_succeeded[source]