@@ -154,7 +154,7 @@ type Config struct {
154
154
}
155
155
156
156
// getRbacRulesForComponentKinds gets the RBAC Rules for the given ComponentKind(s).
157
- func (c * Config ) getRbacRulesForComponentKinds (logger logr.Logger , componentKinds ... ComponentKind ) ([]rbacv1.PolicyRule , error ) {
157
+ func (c * Config ) getClusterRoleRbacRulesForComponentKinds (logger logr.Logger , componentKinds ... ComponentKind ) ([]rbacv1.PolicyRule , error ) {
158
158
var rules []rbacv1.PolicyRule
159
159
enabledComponents := c .GetEnabledComponents ()
160
160
for _ , componentKind := range componentKinds {
@@ -180,7 +180,7 @@ func (c *Config) getRbacRulesForComponentKinds(logger logr.Logger, componentKind
180
180
for componentName := range enabledComponents [componentKind ] {
181
181
// TODO: Clean up the naming here and make it simpler to use a retriever.
182
182
parser := retriever (componentName )
183
- if parsedRules , err := parser .GetRBACRules (logger , cfg .Object [componentName ]); err != nil {
183
+ if parsedRules , err := parser .GetClusterRoleRules (logger , cfg .Object [componentName ]); err != nil {
184
184
return nil , err
185
185
} else {
186
186
rules = append (rules , parsedRules ... )
@@ -190,6 +190,68 @@ func (c *Config) getRbacRulesForComponentKinds(logger logr.Logger, componentKind
190
190
return rules , nil
191
191
}
192
192
193
+ // getRbacRolesForComponentKinds gets the RBAC Roles for the given ComponentKind(s).
194
+ func (c * Config ) getRbacRolesForComponentKinds (logger logr.Logger , otelCollectorName string , componentKinds ... ComponentKind ) ([]* rbacv1.Role , error ) {
195
+ var roles []* rbacv1.Role
196
+ enabledComponents := c .GetEnabledComponents ()
197
+ for _ , componentKind := range componentKinds {
198
+ var retriever components.ParserRetriever
199
+ var cfg AnyConfig
200
+ switch componentKind {
201
+ case KindReceiver :
202
+ retriever = receivers .ReceiverFor
203
+ cfg = c .Receivers
204
+ case KindExporter :
205
+ continue
206
+ case KindProcessor :
207
+ continue
208
+ case KindExtension :
209
+ continue
210
+ }
211
+ for componentName := range enabledComponents [componentKind ] {
212
+ // TODO: Clean up the naming here and make it simpler to use a retriever.
213
+ parser := retriever (componentName )
214
+ if parsedRoles , err := parser .GetRbacRoles (logger , otelCollectorName , cfg .Object [componentName ]); err != nil {
215
+ return nil , err
216
+ } else {
217
+ roles = append (roles , parsedRoles ... )
218
+ }
219
+ }
220
+ }
221
+ return roles , nil
222
+ }
223
+
224
+ // getRbacRoleBindingsForComponentKinds gets the RBAC RoleBindings for the given ComponentKind(s).
225
+ func (c * Config ) getRbacRoleBindingsForComponentKinds (logger logr.Logger , serviceAccountName string , otelCollectorName string , otelCollectorNamespace string , componentKinds ... ComponentKind ) ([]* rbacv1.RoleBinding , error ) {
226
+ var roleBindings []* rbacv1.RoleBinding
227
+ enabledComponents := c .GetEnabledComponents ()
228
+ for _ , componentKind := range componentKinds {
229
+ var retriever components.ParserRetriever
230
+ var cfg AnyConfig
231
+ switch componentKind {
232
+ case KindReceiver :
233
+ retriever = receivers .ReceiverFor
234
+ cfg = c .Receivers
235
+ case KindExporter :
236
+ continue
237
+ case KindProcessor :
238
+ continue
239
+ case KindExtension :
240
+ continue
241
+ }
242
+ for componentName := range enabledComponents [componentKind ] {
243
+ // TODO: Clean up the naming here and make it simpler to use a retriever.
244
+ parser := retriever (componentName )
245
+ if parsedRoleBindings , err := parser .GetRbacRoleBindings (logger , otelCollectorName , cfg .Object [componentName ], serviceAccountName , otelCollectorNamespace ); err != nil {
246
+ return nil , err
247
+ } else {
248
+ roleBindings = append (roleBindings , parsedRoleBindings ... )
249
+ }
250
+ }
251
+ }
252
+ return roleBindings , nil
253
+ }
254
+
193
255
// getPortsForComponentKinds gets the ports for the given ComponentKind(s).
194
256
func (c * Config ) getPortsForComponentKinds (logger logr.Logger , componentKinds ... ComponentKind ) ([]corev1.ServicePort , error ) {
195
257
var ports []corev1.ServicePort
@@ -340,8 +402,16 @@ func (c *Config) GetEnvironmentVariables(logger logr.Logger) ([]corev1.EnvVar, e
340
402
return c .getEnvironmentVariablesForComponentKinds (logger , KindReceiver )
341
403
}
342
404
343
- func (c * Config ) GetAllRbacRules (logger logr.Logger ) ([]rbacv1.PolicyRule , error ) {
344
- return c .getRbacRulesForComponentKinds (logger , KindReceiver , KindExporter , KindProcessor )
405
+ func (c * Config ) GetAllClusterRoleRbacRules (logger logr.Logger ) ([]rbacv1.PolicyRule , error ) {
406
+ return c .getClusterRoleRbacRulesForComponentKinds (logger , KindReceiver , KindExporter , KindProcessor )
407
+ }
408
+
409
+ func (c * Config ) GetAllRbacRoles (logger logr.Logger , otelCollectorName string ) ([]* rbacv1.Role , error ) {
410
+ return c .getRbacRolesForComponentKinds (logger , otelCollectorName , KindReceiver , KindExporter , KindProcessor )
411
+ }
412
+
413
+ func (c * Config ) GetAllRbacRoleBindings (logger logr.Logger , serviceAccountName string , otelCollectorName string , otelCollectorNamespace string ) ([]* rbacv1.RoleBinding , error ) {
414
+ return c .getRbacRoleBindingsForComponentKinds (logger , serviceAccountName , otelCollectorName , otelCollectorNamespace , KindReceiver , KindExporter , KindProcessor )
345
415
}
346
416
347
417
func (c * Config ) ApplyDefaults (logger logr.Logger ) error {
0 commit comments