1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package requester
import (
"strings"
"time"
"github.com/johnandersen777/socialweb-computer-kcp/api/v1alpha1"
)
const foreignOwnerRetry = 2 * time.Second
func (q *Requester) contractOwner() string {
return strings.TrimSpace(q.cfg.Spec.ContractOwnerDid)
}
func (q *Requester) ownsContract(contract v1alpha1.ComputeContract) bool {
owner := q.contractOwner()
return owner == "" || strings.TrimSpace(contract.Spec.OwnerDid) == owner
}
func (q *Requester) syncOwnership(item v1alpha1.StateSync) (mine bool, retry time.Duration) {
if q.contractOwner() == "" {
return true, 0
}
for _, ref := range item.OwnerReferences {
if ref.Kind != "ComputeContract" {
continue
}
if _, foreign := q.foreignContracts.Load(ref.Name); foreign {
return false, 0
}
if _, ok := q.contracts.Get(ref.Name); !ok {
return false, foreignOwnerRetry
}
}
return true, 0
}