@@ -6,6 +6,7 @@ package custompollers
66import (
77 "context"
88 "fmt"
9+ "slices"
910 "time"
1011
1112 "github.com/hashicorp/go-azure-helpers/lang/pointer"
@@ -16,16 +17,18 @@ import (
1617var _ pollers.PollerType = & dataProtectionBackupInstancePoller {}
1718
1819type dataProtectionBackupInstancePoller struct {
19- client * backupinstanceresources.BackupInstanceResourcesClient
20- id backupinstanceresources.BackupInstanceId
21- targetState backupinstanceresources.CurrentProtectionState
20+ client * backupinstanceresources.BackupInstanceResourcesClient
21+ id backupinstanceresources.BackupInstanceId
22+ pendingStates []backupinstanceresources.CurrentProtectionState
23+ targetState backupinstanceresources.CurrentProtectionState
2224}
2325
24- func NewDataProtectionBackupInstancePoller (client * backupinstanceresources.BackupInstanceResourcesClient , id backupinstanceresources.BackupInstanceId , targetState backupinstanceresources.CurrentProtectionState ) * dataProtectionBackupInstancePoller {
26+ func NewDataProtectionBackupInstancePoller (client * backupinstanceresources.BackupInstanceResourcesClient , id backupinstanceresources.BackupInstanceId , targetState backupinstanceresources.CurrentProtectionState , pendingStates []backupinstanceresources. CurrentProtectionState ) * dataProtectionBackupInstancePoller {
2527 return & dataProtectionBackupInstancePoller {
26- client : client ,
27- id : id ,
28- targetState : targetState ,
28+ client : client ,
29+ id : id ,
30+ pendingStates : pendingStates ,
31+ targetState : targetState ,
2932 }
3033}
3134
@@ -51,8 +54,12 @@ func (p dataProtectionBackupInstancePoller) Poll(ctx context.Context) (*pollers.
5154 }, nil
5255 }
5356
54- return & pollers.PollResult {
55- PollInterval : 1 * time .Minute ,
56- Status : pollers .PollingStatusInProgress ,
57- }, nil
57+ if slices .Contains (p .pendingStates , currentState ) {
58+ return & pollers.PollResult {
59+ PollInterval : 1 * time .Minute ,
60+ Status : pollers .PollingStatusInProgress ,
61+ }, nil
62+ }
63+
64+ return nil , fmt .Errorf ("waiting for %s to reach state `%s` but got unexpected state `%s`" , p .id , string (p .targetState ), string (currentState ))
5865}
0 commit comments