ClusterRole creates ClusterRole resource
(n ClusterPolicyController)
| 461 | |
| 462 | // ClusterRole creates ClusterRole resource |
| 463 | func ClusterRole(n ClusterPolicyController) (gpuv1.State, error) { |
| 464 | ctx := n.ctx |
| 465 | state := n.idx |
| 466 | obj := n.resources[state].ClusterRole.DeepCopy() |
| 467 | obj.Namespace = n.operatorNamespace |
| 468 | |
| 469 | logger := n.logger.WithValues("ClusterRole", obj.Name, "Namespace", obj.Namespace) |
| 470 | |
| 471 | // Check if state is disabled and cleanup resource if exists |
| 472 | if !n.isStateEnabled(n.stateNames[n.idx]) { |
| 473 | err := n.client.Delete(ctx, obj) |
| 474 | if err != nil && !apierrors.IsNotFound(err) { |
| 475 | logger.Info("Couldn't delete", "Error", err) |
| 476 | return gpuv1.NotReady, err |
| 477 | } |
| 478 | return gpuv1.Disabled, nil |
| 479 | } |
| 480 | |
| 481 | if !isRBACEnabled(obj.Name, &n.singleton.Spec) { |
| 482 | err := n.client.Delete(ctx, obj) |
| 483 | if err != nil && !apierrors.IsNotFound(err) { |
| 484 | logger.Error(err, "Couldn't delete") |
| 485 | return gpuv1.NotReady, err |
| 486 | } |
| 487 | return gpuv1.Disabled, nil |
| 488 | } |
| 489 | |
| 490 | if err := controllerutil.SetControllerReference(n.singleton, obj, n.scheme); err != nil { |
| 491 | return gpuv1.NotReady, err |
| 492 | } |
| 493 | |
| 494 | if err := n.client.Create(ctx, obj); err != nil { |
| 495 | if apierrors.IsAlreadyExists(err) { |
| 496 | logger.Info("Found Resource, updating...") |
| 497 | err = n.client.Update(ctx, obj) |
| 498 | if err != nil { |
| 499 | logger.Info("Couldn't update", "Error", err) |
| 500 | return gpuv1.NotReady, err |
| 501 | } |
| 502 | return gpuv1.Ready, nil |
| 503 | } |
| 504 | |
| 505 | logger.Info("Couldn't create", "Error", err) |
| 506 | return gpuv1.NotReady, err |
| 507 | } |
| 508 | |
| 509 | return gpuv1.Ready, nil |
| 510 | } |
| 511 | |
| 512 | // ClusterRoleBinding creates ClusterRoleBinding resource |
| 513 | func ClusterRoleBinding(n ClusterPolicyController) (gpuv1.State, error) { |
nothing calls this directly
no test coverage detected