PHP 8.2.30
Preview: bursting.py Size: 1.95 KB
/proc/self/root/proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/orm/bursting.py

# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2023 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

# pylint: disable=abstract-method

import enum
from enum import IntEnum

import sqlalchemy as sa

from lvestats.orm.base import Base
from lvestats.orm.const import LVE_STATS_2_TABLENAME_PREFIX, SERVER_ID_LENGTH


class _EnumAsInteger(sa.types.TypeDecorator):
    # NOTE(vlebedev): Taken as-is from https://stackoverflow.com/a/38786737/3344105
    """Column type for storing Python enums in a database INTEGER column.

    This will behave erratically if a database value does not correspond to
    a known enum value.
    """

    impl = sa.types.SmallInteger  # underlying database type

    def __init__(self, enum_type):
        super().__init__()
        self.enum_type = enum_type

    def process_bind_param(self, value, dialect):
        if isinstance(value, self.enum_type):
            return value.value
        raise ValueError(
            f'expected {self.enum_type.__name__} value, got {value.__class__.__name__}'
        )

    def process_result_value(self, value, dialect):
        return self.enum_type(value)

    def copy(self, **kwargs):
        return _EnumAsInteger(self.enum_type)


@enum.unique
class BurstingEventType(IntEnum):
    STOPPED = 0
    STARTED = 1


bursting_events_table = sa.Table(
    LVE_STATS_2_TABLENAME_PREFIX + 'bursting_events',
    Base.metadata,
    # 'server_id' is essential for proper functionality
    # when used with a central database for multiple servers
    sa.Column('server_id', sa.String(SERVER_ID_LENGTH), primary_key=True),
    sa.Column('lve_id', sa.BigInteger, primary_key=True),
    sa.Column(
        'timestamp',
        sa.Integer,
        primary_key=True,
        index=True,
        comment='UNIX timestamp of the event (seconds precision)'
    ),
    sa.Column('event_type', _EnumAsInteger(BurstingEventType), nullable=False),
)

Directory Contents

Dirs: 1 × Files: 9

Name Size Perms Modified Actions
- drwxr-xr-x 2026-03-05 22:36:53
Edit Download
450 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download
1.95 KB lrw-r--r-- 2026-02-17 11:00:05
Edit Download
265 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download
3.12 KB lrw-r--r-- 2026-02-17 11:00:05
Edit Download
1.24 KB lrw-r--r-- 2026-02-17 11:00:05
Edit Download
1005 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download
594 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download
809 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download
977 B lrw-r--r-- 2026-02-17 11:00:05
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).