diff --git a/sdk/azcore/internal/pollers/util.go b/sdk/azcore/internal/pollers/util.go index 17ab7dadc3fa..8ea8d881e936 100644 --- a/sdk/azcore/internal/pollers/util.go +++ b/sdk/azcore/internal/pollers/util.go @@ -23,6 +23,7 @@ import ( // the well-known set of LRO status/provisioning state values. const ( + StatusCompleted = "Completed" StatusSucceeded = "Succeeded" StatusCanceled = "Canceled" StatusFailed = "Failed" @@ -31,7 +32,7 @@ const ( // IsTerminalState returns true if the LRO's state is terminal. func IsTerminalState(s string) bool { - return strings.EqualFold(s, StatusSucceeded) || strings.EqualFold(s, StatusFailed) || strings.EqualFold(s, StatusCanceled) + return strings.EqualFold(s, StatusSucceeded) || strings.EqualFold(s, StatusFailed) || strings.EqualFold(s, StatusCanceled) || strings.EqualFold(s, StatusCompleted) } // Failed returns true if the LRO's state is terminal failure. @@ -44,6 +45,11 @@ func Succeeded(s string) bool { return strings.EqualFold(s, StatusSucceeded) } +// Completed return true if is terminal completed +func Completed(s string) bool { + return strings.EqualFold(s, StatusCompleted) +} + // returns true if the LRO response contains a valid HTTP status code func StatusCodeValid(resp *http.Response) bool { return exported.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusCreated, http.StatusNoContent) diff --git a/sdk/azcore/internal/pollers/util_test.go b/sdk/azcore/internal/pollers/util_test.go index 1c843bc3a183..a0120ef1b84c 100644 --- a/sdk/azcore/internal/pollers/util_test.go +++ b/sdk/azcore/internal/pollers/util_test.go @@ -24,6 +24,7 @@ func TestIsTerminalState(t *testing.T) { require.True(t, IsTerminalState("Succeeded"), "Succeeded is a terminal state") require.True(t, IsTerminalState("failed"), "failed is a terminal state") require.True(t, IsTerminalState("canceled"), "canceled is a terminal state") + require.True(t, IsTerminalState("Completed"), "Completed is a terminal state") } func TestStatusCodeValid(t *testing.T) { @@ -90,6 +91,7 @@ func TestIsValidURL(t *testing.T) { func TestFailed(t *testing.T) { require.False(t, Failed("Succeeded")) require.False(t, Failed("Updating")) + require.False(t, Failed("Completed")) require.True(t, Failed("failed")) }