forked from servicemeshinterface/smi-controller-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathv1Alpha_split.go
More file actions
77 lines (64 loc) · 1.85 KB
/
v1Alpha_split.go
File metadata and controls
77 lines (64 loc) · 1.85 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
package sdk
import (
"context"
"github.com/go-logr/logr"
splitv1alpha4 "github.com/servicemeshinterface/smi-controller-sdk/apis/split/v1alpha4"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
)
// V1AlphaAccess defines an interface containing callback methods for the v1alpha4 API
// traffic access objects
type v1AlphaSplit interface {
UpsertTrafficSplit
DeleteTrafficSplit
}
// UpsertTrafficSplit defines a callback function for updating or
// inserting a new TrafficSplit
type UpsertTrafficSplit interface {
UpsertTrafficSplit(
ctx context.Context,
r client.Client,
l logr.Logger,
tt *splitv1alpha4.TrafficSplit) (ctrl.Result, error)
}
// DeleteTrafficSplit defines a callback function for deleting
// a new TrafficSplit
type DeleteTrafficSplit interface {
DeleteTrafficSplit(
ctx context.Context,
r client.Client,
l logr.Logger,
tt *splitv1alpha4.TrafficSplit) (ctrl.Result, error)
}
// UpsertTrafficSplit will call the user defined UpsertTrafficSplit callback
// when defined
func (a *v1AlphaImpl) UpsertTrafficSplit(
ctx context.Context,
r client.Client,
l logr.Logger,
tt *splitv1alpha4.TrafficSplit,
) (ctrl.Result, error) {
// does the user api have this callback?
v, ok := a.userV1alpha.(UpsertTrafficSplit)
if !ok {
l.Info("Client code does not implement UpsertTrafficSplit")
return ctrl.Result{}, nil
}
// call the interface method
return v.UpsertTrafficSplit(ctx, r, l, tt)
}
func (a *v1AlphaImpl) DeleteTrafficSplit(
ctx context.Context,
r client.Client,
l logr.Logger,
tt *splitv1alpha4.TrafficSplit,
) (ctrl.Result, error) {
// does the user api have this callback?
v, ok := a.userV1alpha.(DeleteTrafficSplit)
if !ok {
l.Info("Client code does not implement DeleteTrafficSplit")
return ctrl.Result{}, nil
}
// call the interface method
return v.DeleteTrafficSplit(ctx, r, l, tt)
}