From ce28906d32fe0f53793654760b8b85b0d8ce7930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 30 Jun 2026 17:33:17 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20P0.2=20=E2=80=94=20auto-cleanup=20not=5F?= =?UTF-8?q?created=20orphan=20instances=20on=20adopt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- universal_rebuild/internal/resources_core/crud.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/universal_rebuild/internal/resources_core/crud.go b/universal_rebuild/internal/resources_core/crud.go index 2dd30d3..809cc56 100644 --- a/universal_rebuild/internal/resources_core/crud.go +++ b/universal_rebuild/internal/resources_core/crud.go @@ -130,7 +130,13 @@ func adoptExistingInstanceOnCreate(ctx context.Context, client *core.UniversalCl } status := normalizeStatus(existing.ExplainedStatus) if isStatusNotCreated(status) { - return "", fmt.Errorf("инстанс с resource_name %s найден в состоянии Not Created; удалите его в Личном кабинете (Управление облаком) и повторите apply. %s", displayName, formatInstanceDetails(existing, serviceID, displayName)) + // P0.2: авто-cleanup orphan-инстанса при adopt_existing_on_create=true. + // Вместо «удалите вручную в ЛК» — удаляем сами и создаём новый. + if err := client.RunInstanceOperationUniversal(ctx, existing.InstanceUid, "delete", nil); err != nil { + return "", fmt.Errorf("не удалось авто-удалить orphan-инстанс %s (статус: %s): %w. %s", + existing.InstanceUid, status, err, formatInstanceDetails(existing, serviceID, displayName)) + } + return client.CreateGenericInstanceUniversalV6(ctx, serviceID, displayName, params) } if isStatusRunning(status) { // Валидация ref-параметров для running инстанса при adopt