Xətalar

REST API-nin xəta formatı, qaytardığı status və xəta kodları, sorğu limiti və təhlükəsiz təkrar cəhd edilə bilən xətalar üzrə istinad.

Sorğu uğursuz olduqda API HTTP xəta statusu və xətanı təsvir edən JSON gövdəsi qaytarır. Bu istinad formatı, kodları və onlarla necə davranmağı sadalayır.

Xəta formatı

Yoxlama xətası
{
  "code": "VALIDATION_FAILED",
  "message": "2 fields failed validation: name, sizeGb",
  "field": "name",
  "details": {
    "errors": [
      { "field": "name", "code": "string_too_short", "message": "String should have at least 1 character" },
      { "field": "sizeGb", "code": "missing", "message": "Field required" }
    ]
  }
}
SahəNə vaxt olurMənası
codeHəmişəAşağıdakı cədvəllərdən maşın tərəfindən oxunan xəta kodu. Proqram məntiqini bu sahəyə əsaslandırın.
messageHəmişəİnsanlar üçün ingilis dilində təsvir. Onu təhlil etməyin; proqramınızda code sahəsindən istifadə edin.
fieldXəta sorğunun bir sahəsinə aid olduqdaHəmin sahənin adı, məsələn, name və ya Idempotency-Key.
detailsƏlavə kontekst olduqdaKoddan asılı olan strukturlaşdırılmış məlumat, məsələn, silməyə mane olan resursların siyahısı.
retryableYalnız dəyəri true olduqdaEyni sorğunun yenidən göndərilməsi uğurlu ola bilər. Sahə olmadıqda onun dəyəri false sayılır.

API 400 Bad Request statusundan istifadə etmir: əməliyyatın sxeminə uyğun gəlməyən sorğu 422 Unprocessable Entity qaytarır.

Status kodları və xəta kodları

StatusKodMənasıNə etməli
400IDEMPOTENCY_KEY_REQUIREDAPI tokeni və ya xidmət hesabı açarı ilə göndərilən, resurs yaradan POST sorğusunda Idempotency-Key başlığı yoxdur.Başlığı yeni UUID ilə göndərin, təkrar cəhddə isə eyni UUID-dən istifadə edin. İdempotent sorğular səhifəsinə baxın.
401UNAUTHENTICATEDGiriş məlumatı yoxdur, yanlışdır, müddəti bitib və ya ləğv edilib.Authorization başlığını yoxlayın. API tokenləri ilə autentifikasiyadan keçin səhifəsinə baxın.
403FORBIDDENBunu etməyə icazəniz yoxdur. details.reason olduqda səbəbi bildirir.Nasazlığın həlli bölməsinə baxın.
403MFA_STEP_UP_REQUIREDƏməliyyat konsol seansınızda son iki faktorlu təsdiqləmə tələb edir.Konsolda autentifikator tətbiqinizlə (authenticator app) təsdiqləyin və yenidən cəhd edin.
403MFA_SETUP_REQUIREDƏməliyyat iki faktorlu autentifikasiya (two-factor authentication) tələb edir, hesabınızda isə o qurulmayıb.İki faktorlu autentifikasiyanı qurun.
403INTERACTIVE_SESSION_REQUIREDƏməliyyatı API tokeni (API token) və ya xidmət hesabının (service account) açarı ilə yerinə yetirmək mümkün deyil.Onu konsolda yerinə yetirin.
404NOT_FOUNDResurs mövcud deyil və ya ona girişiniz yoxdur. API bu iki halı bir-birindən ayırmır.ID-ni və layihəni (project) yoxlayın.
405METHOD_NOT_ALLOWEDYol mövcuddur, lakin bu metodla deyil.Metodu API istinadında yoxlayın.
409CONFLICTSorğu cari vəziyyətlə ziddiyyət təşkil edir, məsələn, artıq istifadə olunan ad və ya artıq icra olunan əməliyyat.Resursu oxuyun və ziddiyyəti aradan qaldırın. retryable dəyəri true olarsa, sonra yenidən cəhd edin.
409QUOTA_EXCEEDEDSorğu abunəliyinizin (subscription) kvotasını və ya xidmət hesabının açarlarının sayı kimi məhsul limitini aşardı. Abunəlik kvotası üçün mesaj resursu, onun limitini və istifadəsini, həmçinin kvota ID-sini göstərir.Resursları azad edin. Abunəlik kvotası üçün artırma da tələb edə bilərsiniz. Kvotalar səhifəsinə baxın.
409CAPACITY_UNAVAILABLERegion sorğunu hazırda yerləşdirə bilmir.Sonra yenidən cəhd edin və ya başqa ölçü (size) seçin. Bu xəta təkrar cəhd edilə biləndir.
409DEPENDENCY_BLOCKEDDigər resurslar bundan asılıdır. details onları sadalayır, məsələn, diskin (volume) qoşulduğu virtual maşın (instance).Əvvəlcə asılılıqları aradan qaldırın.
409LOCKEDResursu dəyişmək mümkün deyil, məsələn, daxildə qurulmuş rolu (built-in role).Heç nə; resurs olduğu kimi qalır.
409DELETION_PROTECTEDSilinmədən qoruma (deletion protection) aktivdir.Silinmədən qorumanı qeyri-aktiv edin və yenidən silin.
409ROOT_VOLUME_WOULD_BE_DELETED, ATTACHED_VOLUME_WOULD_BE_DELETEDVirtual maşının silinməsi saxlanmalı olan diski də silərdi, ona görə platforma silməni rədd edib.Virtual maşınlarda nasazlıqları həll edin səhifəsinə baxın.
412PRECONDITION_FAILEDIf-Match dəyəri resursun cari versiyasına uyğun gəlmir və ya tələb olunan If-Match başlığı yoxdur.Resursu yenidən oxuyun və dəyişikliyi onun yeni ETag dəyəri ilə təkrarlayın.
422VALIDATION_FAILEDSorğu etibarsızdır. field və details.errors problemləri göstərir.Sorğunu düzəldin. Yoxlama xətaları bölməsinə baxın.
429RATE_LIMITEDÇox sayda sorğu göndərmisiniz.Retry-After başlığındakı saniyə sayı qədər gözləyin. Sorğu limiti bölməsinə baxın.
500INTERNALGözlənilməz xəta baş verib.Sonra yenidən cəhd edin. Xəta təkrarlanarsa, onu X-Request-Id ilə bildirin.
502PROVIDER_ERRORBulud işi qəbul edib və iş orada uğursuz olub, məsələn, yüklənə bilməyən obraz (image). Xəta təkrar cəhd edilə bilən kimi işarələnmir.Mesajı oxuyun və sorğunu dəyişin.
502"retryable": true ilə INTERNALAPI şlüzü xidmətə çata bilməyib.Artan fasilələrlə yenidən cəhd edin.
503PROVIDER_UNAVAILABLEBulud xidməti müvəqqəti olaraq əlçatan deyil.Artan fasilələrlə yenidən cəhd edin. Bu xəta təkrar cəhd edilə biləndir.

Bəzi sorğular regionun təklif etmədiyi imkan üçün də 404 Not Found qaytarır, məsələn, regionun təmin edə bilmədiyi saxlanma zamanı şifrləməni tələb etdikdə. Mesaj imkanı və regionu göstərir. Təkrar cəhd bu cavabı dəyişə bilməz.

İdxal edilmiş layihələr

Bu kodlar yalnız platforma operatorunun sizin üçün mövcud resursları ilə birlikdə idxal etdiyi layihələrdə görünür:

StatusKodMənası
409IMPORTED_PROJECT_ACK_REQUIREDLayihənin silinməsi idxalla gələn resursları da silir. Bunu təsdiqləmək üçün sorğu acknowledgeImportedProjectDestruction sahəsini true təyin etməlidir.
403IMPORTED_PROJECT_PROTECTEDİdxaldan sonra müəyyən müddət ərzində layihəni silə bilməzsiniz. details.protectedUntil bunun hansı vaxta qədər olduğunu bildirir.
409IMPORTED_PROJECT_IMPORT_INCOMPLETEİdxal başa çatmayıb, ona görə layihəni silmək mümkün deyil.
409IMPORTED_PROJECT_RELEASE_IN_PROGRESSOperator layihəni azad edir və ya azad etmə uğursuz olub.
409IMPORTED_BACKUP_PLAN_READ_ONLYEhtiyat nüsxə planı (backup plan) idxalla gələn ehtiyat nüsxələri (backup) saxlayır. Onu oxuya və ondan bərpa edə bilərsiniz, lakin onu dəyişə bilməzsiniz.

Yoxlama xətaları

Etibarsız sorğu üçün 422 Unprocessable Entity cavabı bütün problemləri bir dəfəyə details.errors daxilində sadalayır. Hər elementdə bunlar var:

  • field: sahənin sorğudakı yolu, səviyyələr arasında nöqtələrlə, problem bütövlükdə gövdəyə aid olduqda isə null.
  • code: problemin növü, məsələn, missing və ya string_too_short.
  • message: ingilis dilində təsvir.

Yuxarı səviyyədəki field birinci elementi təsvir edir, message isə bütün sahələri sadalayır. Sorğunu yenidən göndərməzdən əvvəl sadalanan bütün sahələri düzəldin.

Sorğu limiti

API şlüzü hər giriş məlumatının sorğu göndərmə sürətini məhdudlaşdırır. Hər API tokeninin, xidmət hesabı açarının və konsol seansının öz limiti var, giriş məlumatı olmayan sorğular isə mənbə IP ünvanı üzrə məhdudlaşdırılır. Limit davamlı sürətdən yuxarı qısa sıçrayışlara imkan verir.

API tokeni və ya xidmət hesabı açarı üçün limit hər giriş məlumatına və əlavə olaraq hər tenant-a, tenant-ın bütün giriş məlumatları üzrə birlikdə tətbiq olunur. Belə sorğunun hər cavabı bu başlıqları daşıyır:

BaşlıqDəyər
X-RateLimit-LimitCari zaman pəncərəsinin icazə verdiyi sorğuların sayı.
X-RateLimit-RemainingCari zaman pəncərəsində qalan sorğuların sayı.
X-RateLimit-ResetZaman pəncərəsinin sıfırlanmasına qalan saniyələrin sayı, ən azı 1.

Limiti aşdıqda şlüz RATE_LIMITED kodu, "retryable": true və gözləmə saniyələrinin sayını (ən azı 1) göstərən Retry-After başlığı ilə 429 Too Many Requests cavabını qaytarır. Növbəti sorğunu göndərməzdən əvvəl ən azı bu qədər gözləyin.

Bu limit REST API-yə göndərilən sorğulara aiddir. Tətbiq giriş məlumatlarının (application credential) limitləri üçün OpenStack API limitləri səhifəsinə baxın.

Asinxron əməliyyatlarda xətalar

202 Accepted sorğusunun işi uğursuz olduqda əməliyyatın state sahəsi FAILED olur, error sahəsində isə yuxarıdakı formatda xəta olur. Uğurlu əməliyyat tələb etdiyiniz nəyisə təmin etmək mümkün olmadıqda eyni formatda warning daşıya bilər. Sinxron və asinxron sorğular bölməsinə baxın.

API-nin qarşısındakı şəbəkədən gələn cavablar

Yerləşdirmə zamanı API-nin qarşısındakı proksi yuxarıdakı xəta formatında olmayan, məsələn, adi mətn gövdəsi ilə 500, 502, 503 və ya 504 cavabı qaytara bilər. Belə cavab sorğunuzun API-yə çatmadığını bildirir. Onu artan fasilələrlə və eyni Idempotency-Key ilə yenidən göndərin.

Xətalarda təkrar cəhd

  • Cavabda "retryable": true olduqda, həmçinin xəta formatında olmayan 500, 502, 503 və ya 504 cavabından sonra yenidən cəhd edin. Eyni Idempotency-Key dəyərini yenidən göndərin. İdempotent sorğular səhifəsinə baxın.
  • Hər təkrar cəhddən əvvəl daha uzun gözləyin, məsələn, 1, 2, 4, sonra isə 8 saniyə. 429 cavabından sonra ən azı Retry-After vaxtı qədər gözləyin.
  • Digər 4xx xətalarını dəyişiklik etmədən təkrarlamayın. Əvvəlcə sorğunu, giriş məlumatını və ya resursun vəziyyətini düzəldin.

Bu səhifədə