from snmp_groups import BulkEnums, BulkNumbers, BulkStrings

CPU_INDEX = '1.3.6.1.4.1.232.1.2.2.1.1.1'

CPU_NAME = BulkStrings(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.3.%i' % i),
    'name',
)

CPU_SPEED = BulkNumbers(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.4.%i' % i),
    'speed',
)

CPU_STEP = BulkNumbers(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.5.%i' % i),
    'step',
)

CPU_STATUS = BulkEnums(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.6.%i' % i),
    'status',
    {
        1: 'unknown',
        2: 'ok',
        3: 'degraded',
        4: 'failed',
        5: 'disabled',
    }
)

CORES_ENABLED = BulkNumbers(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.15.%i' % i),
    'cores_enabled',
)

THREADS_AVAILABLE = BulkNumbers(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.25.%i' % i),
    'threads_available',
)

CPU_POWER_STATUS = BulkEnums(
    (lambda i: '1.3.6.1.4.1.232.1.2.2.1.1.26.%i' % i),
    'power_status',
    {
        1: 'unknown',
        2: 'Low Powered',
        3: 'Normal Powered',
        4: 'High Powered',
    }
)

# for debugging
CPU_VALUES = [
    CPU_NAME,
    CPU_SPEED,
    CPU_STEP,
    CPU_STATUS,
    CORES_ENABLED,
    THREADS_AVAILABLE,
    CPU_POWER_STATUS,
]