Skip to content

Commit 16caf89

Browse files
authored
Merge arm/runtime/poller.go into runtime/poller.go (Azure#17708)
* Merge arm/runtime/poller.go into runtime/poller.go LRO refactoring has alleviated the need for separation of ARM and data-plane pollers so the content has been merged into the runtime package. The duplicated content under arm/runtime will be removed in a future release. The arm/internal/pollers/loc package was renamed to armloc to avoid colliding with the existing data-plane package. These will need to be consolidated in a separate change. No functional changes to the relocated, internal, pollers. * update changelog * clean up deprecation notice * rebased on main and fixed up tests
1 parent 8d63949 commit 16caf89

File tree

15 files changed

+548
-185
lines changed

15 files changed

+548
-185
lines changed

sdk/azcore/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
### Bugs Fixed
1414

1515
### Other Changes
16+
* The functionality in `arm/runtime/poller.go` has been merged into `runtime/poller.go` so it should be used instead.
17+
* `arm/runtime/poller.go` will be removed in a future release.
1618

1719
## 0.23.1 (2022-04-14)
1820

sdk/azcore/arm/internal/pollers/pollers.go

Lines changed: 0 additions & 68 deletions
This file was deleted.

sdk/azcore/arm/internal/pollers/pollers_test.go

Lines changed: 0 additions & 91 deletions
This file was deleted.

sdk/azcore/arm/runtime/poller.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
package runtime
88

9+
// NOTE: this file will be deleted in a future release
10+
911
import (
1012
"context"
1113
"encoding/json"
@@ -14,10 +16,10 @@ import (
1416
"net/http"
1517
"time"
1618

17-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/async"
18-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/body"
19-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/loc"
2019
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
20+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/armloc"
21+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async"
22+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body"
2123
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
2224
"github.com/Azure/azure-sdk-for-go/sdk/internal/log"
2325
)
@@ -50,6 +52,7 @@ type NewPollerOptions[T any] struct {
5052
}
5153

5254
// NewPoller creates a Poller based on the provided initial response.
55+
// Deprecated: use azcore/runtime.NewPoller instead.
5356
func NewPoller[T any](resp *http.Response, pl runtime.Pipeline, options *NewPollerOptions[T]) (*Poller[T], error) {
5457
if options == nil {
5558
options = &NewPollerOptions[T]{}
@@ -68,8 +71,8 @@ func NewPoller[T any](resp *http.Response, pl runtime.Pipeline, options *NewPoll
6871
var lro pollers.Operation
6972
if async.Applicable(resp) {
7073
lro, err = async.New(resp, options.FinalStateVia, tName)
71-
} else if loc.Applicable(resp) {
72-
lro, err = loc.New(resp, tName)
74+
} else if armloc.Applicable(resp) {
75+
lro, err = armloc.New(resp, tName)
7376
} else if body.Applicable(resp) {
7477
// must test body poller last as it's a subset of the other pollers.
7578
// TODO: this is ambiguous for PATCH/PUT if it returns a 200 with no polling headers (sync completion)
@@ -98,6 +101,7 @@ type NewPollerFromResumeTokenOptions[T any] struct {
98101
}
99102

100103
// NewPollerFromResumeToken creates a Poller from a resume token string.
104+
// Deprecated: use azcore/runtime.NewPollerFromResumeToken instead.
101105
func NewPollerFromResumeToken[T any](token string, pl runtime.Pipeline, options *NewPollerFromResumeTokenOptions[T]) (*Poller[T], error) {
102106
if options == nil {
103107
options = &NewPollerFromResumeTokenOptions[T]{}
@@ -116,9 +120,9 @@ func NewPollerFromResumeToken[T any](token string, pl runtime.Pipeline, options
116120
case async.Kind:
117121
log.Writef(log.EventLRO, "Resuming %s poller.", async.Kind)
118122
lro = &async.Poller{}
119-
case loc.Kind:
120-
log.Writef(log.EventLRO, "Resuming %s poller.", loc.Kind)
121-
lro = &loc.Poller{}
123+
case armloc.Kind:
124+
log.Writef(log.EventLRO, "Resuming %s poller.", armloc.Kind)
125+
lro = &armloc.Poller{}
122126
case body.Kind:
123127
log.Writef(log.EventLRO, "Resuming %s poller.", body.Kind)
124128
lro = &body.Poller{}
@@ -142,6 +146,7 @@ type PollUntilDoneOptions struct {
142146
}
143147

144148
// Poller encapsulates a long-running operation, providing polling facilities until the operation reaches a terminal state.
149+
// Deprecated: use azcore/runtime.Poller[T] instead.
145150
type Poller[T any] struct {
146151
pt *pollers.Poller
147152
rt *T

sdk/azcore/arm/runtime/poller_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import (
1515
"testing"
1616
"time"
1717

18-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/async"
19-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/body"
20-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers/loc"
2118
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
2219
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
20+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/armloc"
21+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async"
22+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body"
2323
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
2424
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
2525
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
@@ -153,7 +153,7 @@ func TestNewPollerLoc(t *testing.T) {
153153
if !closed() {
154154
t.Fatal("initial response body wasn't closed")
155155
}
156-
if pt := pollers.PollerType(poller.pt); pt != reflect.TypeOf(&loc.Poller{}) {
156+
if pt := pollers.PollerType(poller.pt); pt != reflect.TypeOf(&armloc.Poller{}) {
157157
t.Fatalf("unexpected poller type %s", pt.String())
158158
}
159159
tk, err := poller.ResumeToken()

sdk/azcore/arm/internal/pollers/loc/loc.go renamed to sdk/azcore/internal/pollers/armloc/loc.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@
44
// Copyright (c) Microsoft Corporation. All rights reserved.
55
// Licensed under the MIT License.
66

7-
package loc
7+
package armloc
88

99
import (
1010
"errors"
1111
"fmt"
1212
"net/http"
1313

14-
armpollers "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers"
14+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported"
1515
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
1616
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
17-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
1817
"github.com/Azure/azure-sdk-for-go/sdk/internal/log"
1918
)
2019

@@ -72,9 +71,9 @@ func (p *Poller) Update(resp *http.Response) error {
7271
if h := resp.Header.Get(shared.HeaderLocation); h != "" {
7372
p.PollURL = h
7473
}
75-
if runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) {
74+
if exported.HasStatusCode(resp, http.StatusOK, http.StatusCreated) {
7675
// if a 200/201 returns a provisioning state, use that instead
77-
state, err := armpollers.GetProvisioningState(resp)
76+
state, err := pollers.GetProvisioningState(resp)
7877
if err != nil && !errors.Is(err, pollers.ErrNoBody) {
7978
return err
8079
}

sdk/azcore/arm/internal/pollers/loc/loc_test.go renamed to sdk/azcore/internal/pollers/armloc/loc_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// Copyright (c) Microsoft Corporation. All rights reserved.
55
// Licensed under the MIT License.
66

7-
package loc
7+
package armloc
88

99
import (
1010
"io"

sdk/azcore/arm/internal/pollers/async/async.go renamed to sdk/azcore/internal/pollers/async/async.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"fmt"
1212
"net/http"
1313

14-
armpollers "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers"
1514
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
1615
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
1716
"github.com/Azure/azure-sdk-for-go/sdk/internal/log"
@@ -68,7 +67,7 @@ func New(resp *http.Response, finalState pollers.FinalStateVia, pollerID string)
6867
FinalState: finalState,
6968
}
7069
// check for provisioning state
71-
state, err := armpollers.GetProvisioningState(resp)
70+
state, err := pollers.GetProvisioningState(resp)
7271
if errors.Is(err, pollers.ErrNoBody) || state == "" {
7372
// NOTE: the ARM RPC spec explicitly states that for async PUT the initial response MUST
7473
// contain a provisioning state. to maintain compat with track 1 and other implementations
@@ -93,7 +92,7 @@ func (p *Poller) Done() bool {
9392

9493
// Update updates the Poller from the polling response.
9594
func (p *Poller) Update(resp *http.Response) error {
96-
state, err := armpollers.GetStatus(resp)
95+
state, err := pollers.GetStatus(resp)
9796
if err != nil {
9897
return err
9998
} else if state == "" {

sdk/azcore/arm/internal/pollers/body/body.go renamed to sdk/azcore/internal/pollers/body/body.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"errors"
1111
"net/http"
1212

13-
armpollers "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm/internal/pollers"
1413
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers"
1514
"github.com/Azure/azure-sdk-for-go/sdk/internal/log"
1615
)
@@ -48,7 +47,7 @@ func New(resp *http.Response, pollerID string) (*Poller, error) {
4847
// default initial state to InProgress. depending on the HTTP
4948
// status code and provisioning state, we might change the value.
5049
curState := pollers.StatusInProgress
51-
provState, err := armpollers.GetProvisioningState(resp)
50+
provState, err := pollers.GetProvisioningState(resp)
5251
if err != nil && !errors.Is(err, pollers.ErrNoBody) {
5352
return nil, err
5453
}
@@ -85,7 +84,7 @@ func (p *Poller) Update(resp *http.Response) error {
8584
p.CurState = pollers.StatusSucceeded
8685
return nil
8786
}
88-
state, err := armpollers.GetProvisioningState(resp)
87+
state, err := pollers.GetProvisioningState(resp)
8988
if errors.Is(err, pollers.ErrNoBody) {
9089
// a missing response body in non-204 case is an error
9190
return err

0 commit comments

Comments
 (0)