terraform/internal/backend/remote/cloud_integration.go
2026-02-17 13:56:34 +00:00

36 lines
938 B
Go

// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package remote
import (
"context"
"log"
"time"
)
// IntegrationContext is a set of data that is useful when performing HCP Terraform integration operations
type IntegrationContext struct {
StopContext context.Context
CancelContext context.Context
}
func (s *IntegrationContext) Poll(backoffMinInterval float64, backoffMaxInterval float64, every func(i int) (bool, error)) error {
for i := 0; ; i++ {
select {
case <-s.StopContext.Done():
log.Print("IntegrationContext.Poll: StopContext.Done() called")
return s.StopContext.Err()
case <-s.CancelContext.Done():
log.Print("IntegrationContext.Poll: CancelContext.Done() called")
return s.CancelContext.Err()
case <-time.After(backoff(backoffMinInterval, backoffMaxInterval, i)):
// blocks for a time between min and max
}
cont, err := every(i)
if !cont {
return err
}
}
}