Lewati ke konten utama

Private Network (Virtual Switch)

Layanan Private Network (sebelumnya dikenal sebagai Virtual Switch atau VSwitch) memungkinkan pelanggan untuk membuat jaringan lokal murni (L2/L3 Network) yang terisolasi dari internet.

Fitur ini ideal untuk memfasilitasi komunikasi aman dan cepat antar Virtual Machine atau sistem komputasi lainnya (misalnya koneksi antara Web Server dan Database Server) tanpa mengekspos trafik keluar.


1. Membuat Private Network Baru

Alokasi jaringan Switch Virtual baru untuk akun Anda pada datacenter pilihan.

Request
POST /api/network/private
Content-Type: application/json

Request Body:

{
"name": "Database Cluster Network",
"location_id": 1,
"cidr": 24
}

Catatan Parameter:

  • name (Wajib): Label/nama pengenal Private Network.
  • location_id (Wajib): ID Datacenter.
  • cidr (Wajib): Rentang subnet jaringan lokal (Range diizinkan: 16 hingga 24).

Respons (201 Created):

{
"message": "Private Network sedang dibuat. Sinkronisasi dengan datacenter akan memakan waktu beberapa saat.",
"data": {
"id": 45,
"uuid": "priv-1234abcd-5678-efgh-9012-ijklmnop3456",
"name": "Database Cluster Network",
"location_id": 1,
"customer_id": 123,
"network_ip": "10.0.1.0",
"cidr": 24,
"status": "Creating",
"created_at": "2026-05-15T15:00:00Z"
}
}

[!NOTE] Aturan Validasi & Asynchronous Provisioning

  • Kuota & Saldo: Pelanggan dibatasi maksimal 5 Private Network. Pelanggan juga tidak diperbolehkan memiliki saldo di bawah nol (minus) saat melakukan pembuatan.
  • Asynchronous: Pembuatan jaringan fisik secara aktual dilakukan oleh sistem di latar belakang (background worker). Sesaat setelah request berhasil, status jaringan adalah Creating. Status ini akan otomatis berubah menjadi Active setelah sinkronisasi dengan Datacenter Proxmox selesai.

2. Melihat Daftar Private Network

Mendapatkan seluruh Virtual Switch yang dimiliki oleh pelanggan.

Request
GET /api/network/private

Respons (200 OK):

{
"message": "Successfully retrieved private networks",
"data": [
{
"id": 45,
"uuid": "priv-1234abcd-5678-efgh-9012-ijklmnop3456",
"name": "Database Cluster Network",
"location_id": 1,
"customer_id": 123,
"network_ip": "10.0.1.0",
"cidr": 24,
"status": "ACTIVE",
"created_at": "2026-05-15T15:00:00Z"
}
]
}

3. Detail Private Network

Melihat informasi lengkap jaringan Private Network tertentu.

Request
GET /api/network/private/{uuid}

Respons (200 OK):

{
"message": "Successfully retrieved private network detail",
"data": {
"id": 45,
"uuid": "priv-1234abcd-5678-efgh-9012-ijklmnop3456",
"name": "Database Cluster Network",
"location_id": 1,
"customer_id": 123,
"network_ip": "10.0.1.0",
"cidr": 24,
"status": "ACTIVE",
"created_at": "2026-05-15T15:00:00Z"
}
}

4. Melihat Daftar Alokasi Private IP

Menampilkan daftar alamat IP yang sudah dikeluarkan dari DHCP/Pool jaringan Private Network ini, beserta Instance yang menggunakannya.

Request
GET /api/network/private/{uuid}/ips

Respons (200 OK):

{
"message": "Successfully retrieved private IPs",
"data": [
{
"id": 100,
"ip": "10.0.1.2",
"ip_description": "Auto-assigned to VM DB-Master",
"instance_id": 12,
"instance_type": "VM",
"pos_x": 10,
"pos_y": 20,
"is_registered": true,
"created_at": "2026-05-15T15:05:00Z"
}
]
}

5. Menugaskan (Assign) Instance ke Private Network

Menyambungkan mesin (seperti Virtual Machine) ke sakelar jaringan (Virtual Switch) ini. Sistem akan secara otomatis mengalokasikan satu Private IP yang kosong untuk antarmuka mesin tersebut.

Request
POST /api/network/private/{uuid}/assign
Content-Type: application/json

Request Body:

{
"instance_id": 12,
"instance_type": "VM"
}

Respons (200 OK):

{
"message": "Instance berhasil ditambahkan ke Private Network. Sinkronisasi IP sedang berjalan."
}

[!IMPORTANT] Prasyarat Instance hanya dapat dihubungkan jika Private Network sudah berstatus Active.


6. Topologi Jaringan (Network Graph)

Mengambil data grafis Node dan Edge jaringan untuk memvisualisasikan bagaimana rute Private Network saling terhubung.

Request
GET /api/network/private/{uuid}/graph

Respons (200 OK):

{
"message": "Graph data retrieved",
"data": {
"private_network_id": 45,
"nodes": [
{
"id": "node-1",
"label": "DB-Master (10.0.1.2)"
}
],
"edges": [
{
"from": "switch-45",
"to": "node-1"
}
]
}
}

7. Menghapus Private Network

Menghapus fasilitas Virtual Switch. Jaringan yang dihapus TIDAK BOLEH memiliki satu pun anggota Instance yang masih tersambung. Anda harus melepas (unassign) seluruh Instance terlebih dahulu.

Request
DELETE /api/network/private/{uuid}

Respons (200 OK):

{
"message": "Private Network berhasil dihapus"
}

[!NOTE] Asynchronous Soft Delete Penghapusan dari database bersifat soft delete dan akan dikerjakan di latar belakang (background worker) untuk sinkronisasi pembersihan jaringan (vswitch) di level Datacenter secara aktual.

[!WARNING] Aturan Validasi Penghapusan akan ditolak (Response HTTP 400 atau 409) apabila masih terdapat Private IP yang aktif digunakan (Assigned) dalam blok subnet ini.