Skip to content

Commit c55f829

Browse files
authored
Make Deprovisioning Status Instant (#191)
We only update resource provisioning status after a reconcile, and that can lead to delays in showing deprovisioning status, or not showing it at all for one shot delete. This is particularly jarring for long running one shot deprovisioners at the UX level. This sets the status to deprovisioning as soon as the deletion timestamp is set.
1 parent d0d80db commit c55f829

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

pkg/server/conversion/conversion.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,13 @@ var (
4141
)
4242

4343
// convertStatusCondition translates from Kubernetes status conditions to API ones.
44-
func convertStatusCondition(in any) openapi.ResourceProvisioningStatus {
44+
func convertStatusCondition(in metav1.Object) openapi.ResourceProvisioningStatus {
45+
// We set the status after a reconcile, so this allows us to
46+
// reflect the correct state to the user immediately.
47+
if in.GetDeletionTimestamp() != nil {
48+
return openapi.ResourceProvisioningStatusDeprovisioning
49+
}
50+
4551
// Not a resource with status conditions, consider it provisioned.
4652
reader, ok := in.(unikornv1.StatusConditionReader)
4753
if !ok {

pkg/server/conversion/conversion_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ func TestResourceReadMetadataAdvanced(t *testing.T) {
144144
require.Equal(t, id, out.Id)
145145
require.Equal(t, name, out.Name)
146146
require.Equal(t, creationTime, out.CreationTime)
147-
require.Equal(t, openapi.ResourceProvisioningStatusUnknown, out.ProvisioningStatus)
147+
require.Equal(t, openapi.ResourceProvisioningStatusDeprovisioning, out.ProvisioningStatus)
148148
require.Equal(t, openapi.ResourceHealthStatusUnknown, out.HealthStatus)
149149

150150
require.Equal(t, ptr.To(description), out.Description)
@@ -170,7 +170,7 @@ func TestOrganizationScopedResourceReadMetadataAdvanced(t *testing.T) {
170170
require.Equal(t, id, out.Id)
171171
require.Equal(t, name, out.Name)
172172
require.Equal(t, creationTime, out.CreationTime)
173-
require.Equal(t, openapi.ResourceProvisioningStatusUnknown, out.ProvisioningStatus)
173+
require.Equal(t, openapi.ResourceProvisioningStatusDeprovisioning, out.ProvisioningStatus)
174174
require.Equal(t, openapi.ResourceHealthStatusUnknown, out.HealthStatus)
175175

176176
require.Equal(t, ptr.To(description), out.Description)
@@ -198,7 +198,7 @@ func TestProjectScopedResourceReadMetadata(t *testing.T) {
198198
require.Equal(t, id, out.Id)
199199
require.Equal(t, name, out.Name)
200200
require.Equal(t, creationTime, out.CreationTime)
201-
require.Equal(t, openapi.ResourceProvisioningStatusUnknown, out.ProvisioningStatus)
201+
require.Equal(t, openapi.ResourceProvisioningStatusDeprovisioning, out.ProvisioningStatus)
202202
require.Equal(t, openapi.ResourceHealthStatusUnknown, out.HealthStatus)
203203

204204
require.Equal(t, ptr.To(description), out.Description)

0 commit comments

Comments
 (0)