VDC kotaları ve kaynakları
Kotalar, içindeki tek tek nesnelerin değil, VDC'nin bir özelliğidir. Oluşturma sırasında
(vdc-create) belirlenir ve güncellemelerle (vdc-set) değiştirilir; kullanım sayaçlarıyla
birlikte tek bir vdc-list çağrısıyla okunur. Boş bir değer (null), o kaynak için sınır
belirlenmediği anlamına gelir.
Ağlar kotalardan ayrı olarak hesaplanır. Ağ, küme düzeyinde bir nesnedir: bir VDC'ye atama yoluyla girer ve adres kapasitesi VDC↔ağ çifti üzerindeki bir sınırla kısıtlanır. Paylaşılan bir ağdaki iki VDC'ye tek bir sınır uygulanmaz; her çift için ayrı bir değer belirlenir.
Kotalar
Her biri kendi kaynağını sınırlayan beş alan vardır. vdc-create değeri bir sayı veya dize
olarak kabul eder ("" ve null değerleri null üretir) ve i32 olarak seri durumdan
çıkarır; vdc-set bir sayı veya null kabul eder.
| Alan | Sınırlanan kaynak |
|---|---|
quota_ram_gb | RAM, GB |
quota_space_gb | Disk alanı, GB |
quota_cpu_ghz | CPU frekansı, GHz |
quota_cpu_cores | CPU çekirdekleri |
quota_space_snapshots | Anlık görüntü alanı |
quota_space_gb, VDC için toplam alanı sınırlar: sanal makine diskleri ve depolama birimleri
toplanır. Kotayı birimlerle tüketmiş bir kiracı VM diski ekleyemez veya genişletemez. Mevcut
makineleri başlatmak bu kurala tabi değildir: kiracı, kota tükenmiş olsa bile kapalı olan kendi
makinesini açabilir.
quota_space_gb değerini gerçekte kullanılan alanın altına düşüremezsiniz: vdc-set böyle bir
değeri -3309 koduyla reddeder ve iletiye istenen sınırı ve geçerli alan kullanımını ekler.
Reddedilen değer uygulanmaz; sınır her zaman tamamen kaldırılabilir (null).

Aşırı abonelik katsayıları
Her kota için bir katsayı vardır. Değerler f64 olarak seri durumdan çıkarılır: kotaların
kendisinden farklı olarak katsayılar kesirli olabilir. Girdi kuralları aynıdır: vdc-create bir
sayı veya dize, vdc-set bir sayı veya null kabul eder.
| Alan | Karşılık gelen kota |
|---|---|
quota_oversubscription_rate_ram | quota_ram_gb |
quota_oversubscription_rate_space_gb | quota_space_gb |
quota_oversubscription_rate_cpu_ghz | quota_cpu_ghz |
quota_oversubscription_rate_cpu_cores | quota_cpu_cores |
quota_oversubscription_rate_space_snapshots | quota_space_snapshots |
Sayaçlar ve kullanım hesabı
vdc-list, erişilebilir her VDC için eksiksiz bir kayıt döndürür: tanımlama, çağıran
kullanıcının rolü, kotalar, katsayılar ve kullanım.
| Alan | Anlamı |
|---|---|
id, name, description | VDC tanımlaması |
created, modified | Oluşturma ve son değişiklik zaman damgaları |
role_id, role_name | Çağıran kullanıcının bu VDC'deki rolü |
vms_total, vms_running | Toplam VM'ler ve çalışan VM'ler |
cpu_running | Çalışan VM'lerin CPU kullanımı |
ram_usage | RAM kullanımı |
space_gb_used | Kullanılan alan, GB: VM diskleri ve depolama birimleri birlikte |
cpu_cores_quota_usage | Kotaya göre CPU çekirdeği kullanımı |
ram_quota_usage | Kotaya göre bellek kullanımı |
space_quota_usage | Kotaya göre disk alanı kullanımı |
Parametresiz bir isteğe yanıt:
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": [
{
"id": 2,
"name": "vdc_name",
"description": null,
"created": 1710000000,
"modified": 1710000000,
"role_id": 2,
"role_name": "vDC admin",
"quota_cpu_cores": null,
"quota_cpu_ghz": null,
"quota_ram_gb": null,
"quota_space_gb": null,
"quota_space_snapshots": null,
"quota_oversubscription_rate_cpu_cores": null,
"quota_oversubscription_rate_cpu_ghz": null,
"quota_oversubscription_rate_ram": null,
"quota_oversubscription_rate_space_gb": null,
"quota_oversubscription_rate_space_snapshots": null,
"cpu_cores_quota_usage": null,
"cpu_running": 0,
"ram_quota_usage": null,
"ram_usage": 0,
"space_gb_used": 0,
"space_quota_usage": null,
"vms_running": 0,
"vms_total": 0
}
]
}
}
Bu VDC'nin kotası yoktur: tüm quota_* alanları boştur; göreli alanlar (*_quota_usage) da
boştur, çünkü oranın hesaplanacağı bir değer yoktur. Mutlak sayaçlar yine de doldurulur ve
sıfıra eşittir.
objective biçimi
İsteğe bağlı objective parametresi vdc-list yanıtının biçimini değiştirir: bir dizi yerine,
anahtarları VDC kimlikleri ve değerleri aynı kayıtlar olan bir nesne döndürür. Biçim alanın
varlığıyla etkinleşir; parametrenin değeri önemli değildir. Bu, bir VDC'yi id ile ararken
istemciyi bir dizi üzerinde yineleme yapmaktan kurtarır.
VDC'ye atanmış ağlar
| Yöntem | Amaç | Erişim |
|---|---|---|
vdc-assign-network | VDC'ye ağ atama | Cluster master veya VDC düzeyinde role (role_id <= 2) sahip ağ oluşturucusu |
vdc-deassign-network | Ağ atamasını kaldırma | Aynı gereksinimler |
vdc-networks | Erişilebilir VDC'lere atanmış ağlar | Herhangi bir kullanıcı; yanıt erişilebilir VDC'lerle sınırlıdır |
vdc-network-addr-limit | VDC↔ağ çifti için adres sınırı | Cluster master |
vdc-assign-network ve vdc-deassign-network aynı parametre çiftini kabul eder: her ikisi de
zorunlu olan vdc_id ve network_id. Başarılı bir yanıtta data alanı boştur.
Atama isteği:
{
"jsonrpc": "2.0",
"method": "vdc-assign-network",
"params": {
"vdc_id": 10,
"network_id": 42
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
Atamayı kaldırma daha kısıtlayıcıdır: VM'lere atanmış portları olan bir ağın ataması
kaldırılamaz. -2206 yanıtı bu tür portların sayısını verir. VM'lerin ağla bağlantısını kesin,
ardından çağrıyı tekrarlayın.
vdc-networks yanıtı iç içe bir nesnedir: dış anahtarlar VDC kimlikleridir; içinde VDC'nin
id ve name değerleri ile her biri kendi kimliğiyle anahtarlanmış atanmış ağ kayıtları
bulunur. Her ağ kaydı, ağın kendi parametrelerinin yanında bu VDC↔ağ çifti için geçerli adres
sınırı olan addr_limit alanını içerir: tür ve aktarım (network_type_id, backend),
vlan_id ve qinq_id etiketleri ve VXLAN parametreleri (vxlan_multicast_addr,
vxlan_port). Bu ağ türüne uygulanmayan alanlar boştur (null):
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"10": {
"id": 10,
"name": "vdc_name",
"42": {
"addr_limit": 32,
"backend": 2,
"creator": 1,
"id": 42,
"mtu": 1500,
"name": "net",
"net_cidr": "192.0.2.0/24",
"network_type_id": 2,
"vlan_id": null,
"qinq_id": null,
"vxlan_multicast_addr": "239.0.0.1",
"vxlan_port": 9009
}
}
}
}
}
VDC↔ağ çifti için adres sınırı
vdc-network-addr-limit yöntemi yalnızca Cluster master tarafından kullanılabilir.
| Parametre | Tür | Zorunlu | Kısıtlamalar |
|---|---|---|---|
vdc_id | Sayı | Evet | En az 0 |
network_id | Sayı | Evet | En az 0 |
addr_limit | Sayı veya null | Evet | En az 0; boş dizeye izin verilmez |
İstek:
{
"jsonrpc": "2.0",
"method": "vdc-network-addr-limit",
"params": {
"vdc_id": 10,
"network_id": 42,
"addr_limit": 32
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
İşlem sırası sabittir: sınır yalnızca zaten atanmış bir ağda belirlenebilir. Ağ VDC'ye atanmamışsa
yanıt -23030 olur ve çifti belirtir. Önce vdc-assign-network çağrısını çalıştırın.
VDC'de atanmış roller
vdc-roles, VDC id değerini kabul eder ve yalnızca Cluster master tarafından kullanılabilir.
Yanıt bir atama haritasıdır: her anahtar, bu VDC'de verilmiş rol kimliklerinin bir listesine
karşılık gelir.
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"12": [2, 3],
"15": [4]
}
}
}
-403 reddi ("Access denied"), çağrının bir Cluster master tarafından yapılmadığı anlamına gelir.
VDC kaynak hata kodları
Her kod çiftinde ilk kod vdc-assign-network yöntemine, ikincisi vdc-deassign-network
yöntemine aittir: yöntemler aynı denetimleri yapar ancak ayrı hata kodu kümeleri kullanır.
İletilerde <vdc> ve <net> istekteki kimliklerdir; sunucu bunların yerine gerçek değerleri
koyar.
| Kod | İleti | Ne zaman döndürülür |
|---|---|---|
-2102, -2203 | "No params at all" | İstekte params nesnesi yok |
-403 | "Access denied" | İstekteki VDC için yetki yok veya yetki var ancak rol gerekli düzeyin altında; her iki durumda da aynı izin reddi kullanılır |
-2108, -2218 | "You ain't the creator of network" | Küme izinleri olmayan VDC düzeyinde bir rol ve ağ başka bir kullanıcı tarafından oluşturulmuş |
-2120, -2220 | "Network id does not exist" | Bu network_id değerine sahip ağ yok |
-2121, -2221 | "Bad vdc_id param value" | vdc_id eksik veya izin verilen aralığın dışında |
-2122, -2222 | "Bad network_id param value" | network_id eksik veya izin verilen aralığın dışında |
-2206 | "There are N ports assigned to VMs" | VM portları hâlâ atanmışken bir ağın VDC'den ataması kaldırılıyor |
-2207 | "Error upon network ID==<net> deassignment from vDC ID==<vdc>" | Ağ atamasını kaldırma başarısız oluyor |
-23020 | "No param addr_limit" | Zorunlu addr_limit istekte eksik |
-23022 | "Bad addr_limit" | addr_limit değeri doğrulamadan geçemiyor |
-23030 | "network_id==<net> has not been assigned to vdc_id==<vdc>, so limit can't be set" | VDC'ye atanmamış bir ağda sınır belirleniyor |