-
Notifications
You must be signed in to change notification settings - Fork 523
Expand file tree
/
Copy pathdns-name-resolver.go
More file actions
96 lines (84 loc) · 3.27 KB
/
dns-name-resolver.go
File metadata and controls
96 lines (84 loc) · 3.27 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package framework
import (
"context"
"time"
"github.com/onsi/ginkgo/v2"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
apiv1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1"
v1 "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/typed/kubeovn/v1"
)
// DNSNameResolverClient is a struct for DNSNameResolver client.
type DNSNameResolverClient struct {
f *Framework
v1.DNSNameResolverInterface
}
func (f *Framework) DNSNameResolverClient() *DNSNameResolverClient {
return &DNSNameResolverClient{
f: f,
DNSNameResolverInterface: f.KubeOVNClientSet.KubeovnV1().DNSNameResolvers(),
}
}
// Get gets the DNSNameResolver.
func (c *DNSNameResolverClient) Get(name string) *apiv1.DNSNameResolver {
ginkgo.GinkgoHelper()
dnsNameResolver, err := c.DNSNameResolverInterface.Get(context.TODO(), name, metav1.GetOptions{})
ExpectNoError(err)
return dnsNameResolver
}
// List lists the DNSNameResolvers.
func (c *DNSNameResolverClient) List(opts metav1.ListOptions) *apiv1.DNSNameResolverList {
ginkgo.GinkgoHelper()
dnsNameResolverList, err := c.DNSNameResolverInterface.List(context.TODO(), opts)
ExpectNoError(err)
return dnsNameResolverList
}
// Create creates the DNSNameResolver.
func (c *DNSNameResolverClient) Create(dnsNameResolver *apiv1.DNSNameResolver) *apiv1.DNSNameResolver {
ginkgo.GinkgoHelper()
dnsNameResolver, err := c.DNSNameResolverInterface.Create(context.TODO(), dnsNameResolver, metav1.CreateOptions{})
ExpectNoError(err)
return dnsNameResolver
}
// Delete deletes the DNSNameResolver.
func (c *DNSNameResolverClient) Delete(name string) {
ginkgo.GinkgoHelper()
err := c.DNSNameResolverInterface.Delete(context.TODO(), name, metav1.DeleteOptions{})
ExpectNoError(err)
}
// WaitToBeReady returns whether the DNSNameResolver is ready within timeout.
func (c *DNSNameResolverClient) WaitToBeReady(name string, timeout time.Duration) bool {
ginkgo.GinkgoHelper()
result := c.WaitUntil(name, func(dnsNameResolver *apiv1.DNSNameResolver) (bool, error) {
// DNSNameResolver is considered ready if it has at least one resolved name
return len(dnsNameResolver.Status.ResolvedNames) > 0, nil
}, "Ready", poll, timeout)
return result != nil
}
// WaitUntil waits until the condition is met.
func (c *DNSNameResolverClient) WaitUntil(name string, cond func(*apiv1.DNSNameResolver) (bool, error), condDesc string, interval, timeout time.Duration) *apiv1.DNSNameResolver {
ginkgo.GinkgoHelper()
var dnsNameResolver *apiv1.DNSNameResolver
err := wait.PollUntilContextTimeout(context.TODO(), interval, timeout, true, func(_ context.Context) (bool, error) {
var err error
dnsNameResolver, err = c.DNSNameResolverInterface.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
if apierrors.IsNotFound(err) {
return false, nil
}
return false, err
}
return cond(dnsNameResolver)
})
ExpectNoError(err, "DNSNameResolver %s failed to be %s within %v", name, condDesc, timeout)
return dnsNameResolver
}
// ListByLabel lists DNSNameResolvers by label selector.
func (c *DNSNameResolverClient) ListByLabel(labelSelector string) *apiv1.DNSNameResolverList {
ginkgo.GinkgoHelper()
opts := metav1.ListOptions{
LabelSelector: labelSelector,
}
return c.List(opts)
}