Files
cloud-orchestrator/migrations/003_os_images.sql
kappa 3c420d2841 feat: manage OS images in database instead of hardcoded values
- Add os_images table with linode_image_id and vultr_os_id columns
- Support Ubuntu (24.04, 22.04), Debian (11-13), AlmaLinux (8-9),
  Rocky Linux (8-9), and Fedora 42
- AlmaLinux and Rocky Linux added as CentOS migration alternatives
- Default OS changed from ubuntu_22_04 to ubuntu_24_04
- Fix Vultr OS IDs (1743=22.04, 2284=24.04)
- Remove hardcoded OS validation, validate against DB
- Return available OS list in error message for invalid image

Migration: migrations/003_os_images.sql

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 10:31:14 +09:00

48 lines
2.6 KiB
SQL

-- OS Images table for managing available operating systems
-- Replaces hardcoded OS_IMAGE_MAP in vps-provider.ts
CREATE TABLE IF NOT EXISTS os_images (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT NOT NULL UNIQUE, -- API key: 'ubuntu_24_04'
name TEXT NOT NULL, -- Display name: 'Ubuntu 24.04 LTS'
family TEXT NOT NULL, -- Family: 'ubuntu', 'debian', 'almalinux', 'rocky'
linode_image_id TEXT, -- Linode image ID: 'linode/ubuntu24.04'
vultr_os_id INTEGER, -- Vultr OS ID: 2284
active INTEGER DEFAULT 1, -- 1=available, 0=deprecated
is_default INTEGER DEFAULT 0, -- 1=default OS for new servers
sort_order INTEGER DEFAULT 100, -- Lower = higher priority in list
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
);
-- Create index for common queries
CREATE INDEX IF NOT EXISTS idx_os_images_active ON os_images(active);
CREATE INDEX IF NOT EXISTS idx_os_images_family ON os_images(family);
-- Insert OS images based on actual Linode/Vultr API data (2026-01)
-- Ubuntu LTS versions
INSERT INTO os_images (key, name, family, linode_image_id, vultr_os_id, active, is_default, sort_order) VALUES
('ubuntu_24_04', 'Ubuntu 24.04 LTS', 'ubuntu', 'linode/ubuntu24.04', 2284, 1, 1, 10),
('ubuntu_22_04', 'Ubuntu 22.04 LTS', 'ubuntu', 'linode/ubuntu22.04', 1743, 1, 0, 20),
('ubuntu_20_04', 'Ubuntu 20.04 LTS', 'ubuntu', 'linode/ubuntu20.04', NULL, 0, 0, 30);
-- Debian versions
INSERT INTO os_images (key, name, family, linode_image_id, vultr_os_id, active, sort_order) VALUES
('debian_13', 'Debian 13 (Trixie)', 'debian', 'linode/debian13', 2625, 1, 40),
('debian_12', 'Debian 12 (Bookworm)', 'debian', 'linode/debian12', 2136, 1, 50),
('debian_11', 'Debian 11 (Bullseye)', 'debian', 'linode/debian11', 477, 1, 60);
-- CentOS alternatives (AlmaLinux - most popular)
INSERT INTO os_images (key, name, family, linode_image_id, vultr_os_id, active, sort_order) VALUES
('almalinux_9', 'AlmaLinux 9', 'almalinux', 'linode/almalinux9', 1868, 1, 70),
('almalinux_8', 'AlmaLinux 8', 'almalinux', 'linode/almalinux8', 452, 1, 80);
-- Rocky Linux (another CentOS alternative)
INSERT INTO os_images (key, name, family, linode_image_id, vultr_os_id, active, sort_order) VALUES
('rocky_9', 'Rocky Linux 9', 'rocky', 'linode/rocky9', 1869, 1, 90),
('rocky_8', 'Rocky Linux 8', 'rocky', 'linode/rocky8', 448, 1, 100);
-- Fedora (for cutting-edge users)
INSERT INTO os_images (key, name, family, linode_image_id, vultr_os_id, active, sort_order) VALUES
('fedora_42', 'Fedora 42', 'fedora', 'linode/fedora42', 2572, 1, 110);