fix: cache lag retry, go.work, провайдер rollback, test v4 no -target

This commit is contained in:
Naeel
2026-03-23 10:03:26 +03:00
parent cb77a7f68e
commit 7a168185ea
6 changed files with 155 additions and 24 deletions
@@ -253,15 +253,23 @@ func (r *JobResource) Create(ctx context.Context, req resource.CreateRequest, re
}
}
// Загружаем код если задан source_dir — контроллер начнёт kaniko сборку после upload
// Загружаем код если задан source_dir — контроллер начнёт kaniko сборку после upload.
// deleteOnFail — откат: удаляем CR если upload провалился,
// иначе при следующем apply будет 409 (CR есть, state пустой).
if !plan.SourceDir.IsNull() && plan.SourceDir.ValueString() != "" {
zipData, hash, err := zipDir(plan.SourceDir.ValueString())
if err != nil {
resp.Diagnostics.AddError("zip source_dir", err.Error())
if delErr := r.client.DeleteJob(ctx, ns, plan.Name.ValueString()); delErr != nil {
resp.Diagnostics.AddWarning("rollback delete job", delErr.Error())
}
return
}
if err := r.client.UploadJobCode(ctx, ns, plan.Name.ValueString(), "function.zip", bytes.NewReader(zipData)); err != nil {
resp.Diagnostics.AddError("upload job code", err.Error())
if delErr := r.client.DeleteJob(ctx, ns, plan.Name.ValueString()); delErr != nil {
resp.Diagnostics.AddWarning("rollback delete job", delErr.Error())
}
return
}
plan.CodeHash = types.StringValue(hash)
@@ -192,22 +192,31 @@ func (r *ServiceResource) Create(ctx context.Context, req resource.CreateRequest
return
}
// deleteOnFail — откат: удаляем CR если upload провалился,
// иначе при следующем apply будет 409 (CR есть, state пустой).
deleteOnFail := func(addErr string, err error) {
resp.Diagnostics.AddError(addErr, err.Error())
if delErr := r.client.DeleteService(ctx, ns, svc.Name); delErr != nil {
resp.Diagnostics.AddWarning("rollback delete service", delErr.Error())
}
}
var codeUploaded bool
if !plan.SourceDir.IsNull() && plan.SourceDir.ValueString() != "" {
zipData, hash, err := zipDir(plan.SourceDir.ValueString())
if err != nil {
resp.Diagnostics.AddError("zip source_dir", err.Error())
deleteOnFail("zip source_dir", err)
return
}
if err := r.client.UploadServiceCodeReader(ctx, ns, svc.Name, "code.zip", bytes.NewReader(zipData)); err != nil {
resp.Diagnostics.AddError("upload service code", err.Error())
deleteOnFail("upload service code", err)
return
}
plan.CodeHash = types.StringValue(hash)
codeUploaded = true
} else if !plan.CodePath.IsNull() && plan.CodePath.ValueString() != "" {
if err := r.client.UploadServiceCode(ctx, ns, svc.Name, plan.CodePath.ValueString()); err != nil {
resp.Diagnostics.AddError("upload service code", err.Error())
deleteOnFail("upload service code", err)
return
}
codeUploaded = true