20251229_0202_a68acea9f536_expand_host_metrics_advanced.py 5.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. """expand_host_metrics_advanced
  2. Revision ID: a68acea9f536
  3. Revises: 7ff254c24bb5
  4. Create Date: 2025-12-29 02:02:00.000000+00:00
  5. """
  6. from typing import Sequence, Union
  7. from alembic import op
  8. import sqlalchemy as sa
  9. from sqlalchemy.dialects import postgresql
  10. # revision identifiers, used by Alembic.
  11. revision: str = 'a68acea9f536'
  12. down_revision: Union[str, None] = '7ff254c24bb5'
  13. branch_labels: Union[str, Sequence[str], None] = None
  14. depends_on: Union[str, Sequence[str], None] = None
  15. def upgrade() -> None:
  16. # Add new CPU columns
  17. op.add_column('host_metrics', sa.Column('cpu_per_core', postgresql.JSON(astext_type=sa.Text()), nullable=True))
  18. op.add_column('host_metrics', sa.Column('cpu_steal', sa.Float(), nullable=False, server_default='0'))
  19. op.add_column('host_metrics', sa.Column('context_switches_per_sec', sa.Integer(), nullable=False, server_default='0'))
  20. op.add_column('host_metrics', sa.Column('interrupts_per_sec', sa.Integer(), nullable=False, server_default='0'))
  21. # Add new Memory columns
  22. op.add_column('host_metrics', sa.Column('memory_available', sa.BigInteger(), nullable=False, server_default='0'))
  23. op.add_column('host_metrics', sa.Column('memory_buffers', sa.BigInteger(), nullable=False, server_default='0'))
  24. op.add_column('host_metrics', sa.Column('memory_cached', sa.BigInteger(), nullable=False, server_default='0'))
  25. op.add_column('host_metrics', sa.Column('swap_total', sa.BigInteger(), nullable=False, server_default='0'))
  26. op.add_column('host_metrics', sa.Column('swap_used', sa.BigInteger(), nullable=False, server_default='0'))
  27. op.add_column('host_metrics', sa.Column('swap_percent', sa.Float(), nullable=False, server_default='0'))
  28. # Add new Disk I/O columns
  29. op.add_column('host_metrics', sa.Column('disk_read_iops', sa.Integer(), nullable=False, server_default='0'))
  30. op.add_column('host_metrics', sa.Column('disk_write_iops', sa.Integer(), nullable=False, server_default='0'))
  31. op.add_column('host_metrics', sa.Column('disk_read_mbps', sa.Float(), nullable=False, server_default='0'))
  32. op.add_column('host_metrics', sa.Column('disk_write_mbps', sa.Float(), nullable=False, server_default='0'))
  33. op.add_column('host_metrics', sa.Column('disk_io_time_ms', sa.BigInteger(), nullable=False, server_default='0'))
  34. # Add new Network columns
  35. op.add_column('host_metrics', sa.Column('net_in_mbps', sa.Float(), nullable=False, server_default='0'))
  36. op.add_column('host_metrics', sa.Column('net_out_mbps', sa.Float(), nullable=False, server_default='0'))
  37. op.add_column('host_metrics', sa.Column('net_packets_in_per_sec', sa.Integer(), nullable=False, server_default='0'))
  38. op.add_column('host_metrics', sa.Column('net_packets_out_per_sec', sa.Integer(), nullable=False, server_default='0'))
  39. op.add_column('host_metrics', sa.Column('net_errors_in', sa.BigInteger(), nullable=False, server_default='0'))
  40. op.add_column('host_metrics', sa.Column('net_errors_out', sa.BigInteger(), nullable=False, server_default='0'))
  41. op.add_column('host_metrics', sa.Column('net_drops_in', sa.BigInteger(), nullable=False, server_default='0'))
  42. op.add_column('host_metrics', sa.Column('net_drops_out', sa.BigInteger(), nullable=False, server_default='0'))
  43. # Add Process columns
  44. op.add_column('host_metrics', sa.Column('process_count', sa.Integer(), nullable=False, server_default='0'))
  45. op.add_column('host_metrics', sa.Column('thread_count', sa.Integer(), nullable=False, server_default='0'))
  46. op.add_column('host_metrics', sa.Column('top_cpu_processes', postgresql.JSON(astext_type=sa.Text()), nullable=True))
  47. op.add_column('host_metrics', sa.Column('top_mem_processes', postgresql.JSON(astext_type=sa.Text()), nullable=True))
  48. def downgrade() -> None:
  49. # Remove added columns
  50. op.drop_column('host_metrics', 'top_mem_processes')
  51. op.drop_column('host_metrics', 'top_cpu_processes')
  52. op.drop_column('host_metrics', 'thread_count')
  53. op.drop_column('host_metrics', 'process_count')
  54. op.drop_column('host_metrics', 'net_drops_out')
  55. op.drop_column('host_metrics', 'net_drops_in')
  56. op.drop_column('host_metrics', 'net_errors_out')
  57. op.drop_column('host_metrics', 'net_errors_in')
  58. op.drop_column('host_metrics', 'net_packets_out_per_sec')
  59. op.drop_column('host_metrics', 'net_packets_in_per_sec')
  60. op.drop_column('host_metrics', 'net_out_mbps')
  61. op.drop_column('host_metrics', 'net_in_mbps')
  62. op.drop_column('host_metrics', 'disk_io_time_ms')
  63. op.drop_column('host_metrics', 'disk_write_mbps')
  64. op.drop_column('host_metrics', 'disk_read_mbps')
  65. op.drop_column('host_metrics', 'disk_write_iops')
  66. op.drop_column('host_metrics', 'disk_read_iops')
  67. op.drop_column('host_metrics', 'swap_percent')
  68. op.drop_column('host_metrics', 'swap_used')
  69. op.drop_column('host_metrics', 'swap_total')
  70. op.drop_column('host_metrics', 'memory_cached')
  71. op.drop_column('host_metrics', 'memory_buffers')
  72. op.drop_column('host_metrics', 'memory_available')
  73. op.drop_column('host_metrics', 'interrupts_per_sec')
  74. op.drop_column('host_metrics', 'context_switches_per_sec')
  75. op.drop_column('host_metrics', 'cpu_steal')
  76. op.drop_column('host_metrics', 'cpu_per_core')