7
7
rts "github.com/ory/keto/proto/ory/keto/relation_tuples/v1alpha2"
8
8
px "github.com/ory/x/pointerx"
9
9
"github.com/pluralsh/oauth-playground/api-server/graph/model"
10
+ observabilityv1alpha1 "github.com/pluralsh/trace-shield-controller/api/observability/v1alpha1"
10
11
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11
12
)
12
13
@@ -17,7 +18,94 @@ const (
17
18
ObservabilityTenantPermissionEdit ObservabilityTenantPermission = "editors"
18
19
)
19
20
20
- func (c * ClientWrapper ) MutateObservabilityTenant (ctx context.Context , name string , viewers * model.ObservabilityTenantViewersInput , editors * model.ObservabilityTenantEditorsInput ) (* model.ObservabilityTenant , error ) {
21
+ func (c * ClientWrapper ) CreateObservabilityTenant (ctx context.Context , name string , viewers * model.ObservabilityTenantViewersInput , editors * model.ObservabilityTenantEditorsInput , limits * model.ObservabilityTenantLimitsInput ) (* model.ObservabilityTenant , error ) {
22
+ log := c .Log .WithName ("CreateObservabilityTenant" ).WithValues ("Name" , name )
23
+
24
+ var mimirLimits * observabilityv1alpha1.MimirLimits
25
+
26
+ if limits != nil && limits .Mimir != nil {
27
+ tmpMimirLimits := observabilityv1alpha1 .MimirLimits (* limits .Mimir )
28
+ mimirLimits = & tmpMimirLimits
29
+ }
30
+
31
+ tenantStruct := & observabilityv1alpha1.Tenant {
32
+ ObjectMeta : metav1.ObjectMeta {
33
+ Name : name ,
34
+ },
35
+ Spec : observabilityv1alpha1.TenantSpec {
36
+ Limits : & observabilityv1alpha1.LimitSpec {
37
+ Mimir : mimirLimits ,
38
+ },
39
+ },
40
+ }
41
+
42
+ tenant , err := c .ControllerClient .ObservabilityV1alpha1 ().Tenants ().Create (ctx , tenantStruct , metav1.CreateOptions {})
43
+ if err != nil {
44
+ log .Error (err , "Failed to create observability tenant" )
45
+ return nil , err
46
+ }
47
+
48
+ if err := c .MutateObservabilityTenantInKeto (ctx , name , viewers , editors ); err != nil {
49
+ log .Error (err , "Failed to mutate observability tenant in keto" )
50
+ return nil , err
51
+ }
52
+
53
+ return & model.ObservabilityTenant {
54
+ Name : tenant .Name ,
55
+ Limits : & model.ObservabilityTenantLimits {
56
+ Mimir : tenant .Spec .Limits .Mimir ,
57
+ },
58
+ }, nil
59
+ }
60
+
61
+ func (c * ClientWrapper ) UpdateObservabilityTenant (ctx context.Context , name string , viewers * model.ObservabilityTenantViewersInput , editors * model.ObservabilityTenantEditorsInput , limits * model.ObservabilityTenantLimitsInput ) (* model.ObservabilityTenant , error ) {
62
+ log := c .Log .WithName ("UpdateObservabilityTenant" ).WithValues ("Name" , name )
63
+
64
+ var mimirLimits * observabilityv1alpha1.MimirLimits
65
+
66
+ if limits != nil && limits .Mimir != nil {
67
+ tmpMimirLimits := observabilityv1alpha1 .MimirLimits (* limits .Mimir )
68
+ mimirLimits = & tmpMimirLimits
69
+ }
70
+
71
+ existingTenant , err := c .ControllerClient .ObservabilityV1alpha1 ().Tenants ().Get (ctx , name , metav1.GetOptions {})
72
+ if err != nil {
73
+ log .Error (err , "Failed to get observability tenant" )
74
+ return nil , err
75
+ }
76
+
77
+ tenantStruct := & observabilityv1alpha1.Tenant {
78
+ ObjectMeta : metav1.ObjectMeta {
79
+ Name : name ,
80
+ ResourceVersion : existingTenant .GetResourceVersion (),
81
+ },
82
+ Spec : observabilityv1alpha1.TenantSpec {
83
+ Limits : & observabilityv1alpha1.LimitSpec {
84
+ Mimir : mimirLimits ,
85
+ },
86
+ },
87
+ }
88
+
89
+ tenant , err := c .ControllerClient .ObservabilityV1alpha1 ().Tenants ().Update (ctx , tenantStruct , metav1.UpdateOptions {})
90
+ if err != nil {
91
+ log .Error (err , "Failed to update observability tenant" )
92
+ return nil , err
93
+ }
94
+
95
+ if err := c .MutateObservabilityTenantInKeto (ctx , name , viewers , editors ); err != nil {
96
+ log .Error (err , "Failed to mutate observability tenant in keto" )
97
+ return nil , err
98
+ }
99
+
100
+ return & model.ObservabilityTenant {
101
+ Name : tenant .Name ,
102
+ Limits : & model.ObservabilityTenantLimits {
103
+ Mimir : tenant .Spec .Limits .Mimir ,
104
+ },
105
+ }, nil
106
+ }
107
+
108
+ func (c * ClientWrapper ) MutateObservabilityTenantInKeto (ctx context.Context , name string , viewers * model.ObservabilityTenantViewersInput , editors * model.ObservabilityTenantEditorsInput ) error {
21
109
22
110
// TODO: figure out which members to add or remove
23
111
log := c .Log .WithName ("ObservabilityTenant" ).WithValues ("Name" , name )
@@ -26,24 +114,24 @@ func (c *ClientWrapper) MutateObservabilityTenant(ctx context.Context, name stri
26
114
// updating a group would require that we first check if it exists and if a user is allowed to update it
27
115
// creating a group would require that we first check if it exists and if a user is allowed to create it
28
116
29
- tenantpExists , err := c .ObservabilityTenantExistsInKeto (ctx , name )
30
- if err != nil {
31
- log .Error (err , "Failed to check if observability tenant already exists in keto" )
32
- return nil , err
33
- }
117
+ // tenantpExists, err := c.ObservabilityTenantExistsInKeto(ctx, name)
118
+ // if err != nil {
119
+ // log.Error(err, "Failed to check if observability tenant already exists in keto")
120
+ // return nil, err
121
+ // }
34
122
35
- if ! tenantpExists {
36
- err := c .CreateObservabilityTenantInKeto (ctx , name )
37
- if err != nil {
38
- log .Error (err , "Failed to create observability tenant in keto" )
39
- return nil , err
40
- }
41
- }
123
+ // if !tenantpExists {
124
+ // err := c.CreateObservabilityTenantInKeto(ctx, name)
125
+ // if err != nil {
126
+ // log.Error(err, "Failed to create observability tenant in keto")
127
+ // return nil, err
128
+ // }
129
+ // }
42
130
43
131
viewUsersToAdd , viewUsersToRemove , viewGroupsToAdd , viewGroupsToRemove , viewClientsToAdd , viewClientsToRemove , err := c .OsTenantChangeset (ctx , name , viewers , nil , ObservabilityTenantPermissionView )
44
132
if err != nil {
45
133
log .Error (err , "Failed to get observability tenant changeset" )
46
- return nil , err
134
+ return err
47
135
}
48
136
49
137
if err := c .AddUsersToTenantInKeto (ctx , name , viewUsersToAdd , ObservabilityTenantPermissionView ); err != nil {
@@ -79,7 +167,7 @@ func (c *ClientWrapper) MutateObservabilityTenant(ctx context.Context, name stri
79
167
editUsersToAdd , editUsersToRemove , editGroupsToAdd , editGroupsToRemove , _ , _ , err := c .OsTenantChangeset (ctx , name , nil , editors , ObservabilityTenantPermissionEdit )
80
168
if err != nil {
81
169
log .Error (err , "Failed to get observability tenant changeset" )
82
- return nil , err
170
+ return err
83
171
}
84
172
85
173
if err := c .AddUsersToTenantInKeto (ctx , name , editUsersToAdd , ObservabilityTenantPermissionEdit ); err != nil {
@@ -102,12 +190,7 @@ func (c *ClientWrapper) MutateObservabilityTenant(ctx context.Context, name stri
102
190
// return nil, err // TODO: add some way to wrap errors
103
191
}
104
192
105
- return & model.ObservabilityTenant {
106
- Name : name ,
107
- Organization : & model.Organization {
108
- Name : "main" , //TODO: decide whether to hardcode this or not
109
- },
110
- }, nil
193
+ return nil
111
194
}
112
195
113
196
// function that checks if an observability tenant exists in keto
0 commit comments