Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions pkg/controller/clusterclaim/clusterclaim_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,8 @@ func (r *ReconcileClusterClaim) Reconcile(ctx context.Context, request reconcile

switch cd.Spec.ClusterPoolRef.ClaimName {
case "":
return r.reconcileForNewAssignment(claim, cd, logger)
logger.Debugf("clusterdeployment %s has not yet been assigned to claim", cd.Name)
return reconcile.Result{}, nil
case claim.Name:
return r.reconcileForExistingAssignment(claim, cd, logger)
default:
Expand Down Expand Up @@ -428,17 +429,6 @@ func (r *ReconcileClusterClaim) reconcileForDeletedCluster(claim *hivev1.Cluster
return reconcile.Result{}, nil
}

func (r *ReconcileClusterClaim) reconcileForNewAssignment(claim *hivev1.ClusterClaim, cd *hivev1.ClusterDeployment, logger log.FieldLogger) (reconcile.Result, error) {
logger.Info("cluster assigned to claim")
cd.Spec.ClusterPoolRef.ClaimName = claim.Name
cd.Spec.PowerState = hivev1.RunningClusterPowerState
if err := r.Update(context.Background(), cd); err != nil {
logger.WithError(err).Log(controllerutils.LogLevel(err), "could not set claim for ClusterDeployment")
return reconcile.Result{}, err
}
return r.reconcileForExistingAssignment(claim, cd, logger)
}

func (r *ReconcileClusterClaim) reconcileForExistingAssignment(claim *hivev1.ClusterClaim, cd *hivev1.ClusterDeployment, logger log.FieldLogger) (reconcile.Result, error) {
logger.Debug("claim has existing cluster assignment")
if err := r.createRBAC(claim, cd, logger); err != nil {
Expand Down
55 changes: 10 additions & 45 deletions pkg/controller/clusterclaim/clusterclaim_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func TestReconcileClusterClaim(t *testing.T) {
},
},
{
name: "new assignment",
name: "unassigned CD is a no-op",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName)),
cd: cdBuilder.Build(
testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
Expand All @@ -133,20 +133,14 @@ func TestReconcileClusterClaim(t *testing.T) {
Status: corev1.ConditionTrue,
},
)),
expectCompletedClaim: true,
expectRBAC: true,
expectedConditions: []hivev1.ClusterClaimCondition{
{
Type: hivev1.ClusterClaimPendingCondition,
Status: corev1.ConditionFalse,
Reason: "ClusterClaimed",
Message: "Cluster claimed",
Type: hivev1.ClusterClaimPendingCondition,
Status: corev1.ConditionUnknown,
},
{
Type: hivev1.ClusterRunningCondition,
Status: corev1.ConditionFalse,
Reason: "Resuming",
Message: "Waiting for cluster to be running",
Type: hivev1.ClusterRunningCondition,
Status: corev1.ConditionUnknown,
},
},
},
Expand Down Expand Up @@ -215,7 +209,7 @@ func TestReconcileClusterClaim(t *testing.T) {
expectAssignedClusterDeploymentDeleted: true,
},
{
name: "new assignment clears pending condition",
name: "existing assignment clears pending condition",
claim: initializedClaimBuilder.Build(
testclaim.WithCluster(clusterName),
testclaim.WithCondition(
Expand All @@ -226,7 +220,7 @@ func TestReconcileClusterClaim(t *testing.T) {
),
),
cd: cdBuilder.Build(
testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
testcd.WithClusterPoolReference(claimNamespace, "test-pool", claimName),
testcd.WithCondition(hivev1.ClusterDeploymentCondition{
Type: hivev1.ClusterHibernatingCondition,
Status: corev1.ConditionTrue,
Expand Down Expand Up @@ -324,7 +318,7 @@ func TestReconcileClusterClaim(t *testing.T) {
{
name: "no RBAC when no subjects",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName), testclaim.WithSubjects(nil)),
cd: cdBuilder.Build(testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
cd: cdBuilder.Build(testcd.WithClusterPoolReference(claimNamespace, "test-pool", claimName),
testcd.WithCondition(hivev1.ClusterDeploymentCondition{
Type: hivev1.ClusterHibernatingCondition,
Status: corev1.ConditionTrue,
Expand All @@ -350,7 +344,7 @@ func TestReconcileClusterClaim(t *testing.T) {
name: "update existing role",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName)),
cd: cdBuilder.Build(
testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
testcd.WithClusterPoolReference(claimNamespace, "test-pool", claimName),
testcd.WithCondition(hivev1.ClusterDeploymentCondition{
Type: hivev1.ClusterHibernatingCondition,
Status: corev1.ConditionTrue,
Expand Down Expand Up @@ -384,7 +378,7 @@ func TestReconcileClusterClaim(t *testing.T) {
name: "update existing rolebinding",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName)),
cd: cdBuilder.Build(
testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
testcd.WithClusterPoolReference(claimNamespace, "test-pool", claimName),
testcd.WithCondition(hivev1.ClusterDeploymentCondition{
Type: hivev1.ClusterHibernatingCondition,
Status: corev1.ConditionTrue,
Expand Down Expand Up @@ -415,35 +409,6 @@ func TestReconcileClusterClaim(t *testing.T) {
},
},
},
{
name: "new assignment bring cluster out of hibernation",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName)),
cd: cdBuilder.Build(
testcd.WithUnclaimedClusterPoolReference(claimNamespace, "test-pool"),
testcd.WithPowerState(hivev1.HibernatingClusterPowerState),
testcd.WithCondition(hivev1.ClusterDeploymentCondition{
Type: hivev1.ClusterHibernatingCondition,
Status: corev1.ConditionTrue,
}),
),
expectCompletedClaim: true,
expectRBAC: true,
expectHibernating: false,
expectedConditions: []hivev1.ClusterClaimCondition{
{
Type: hivev1.ClusterClaimPendingCondition,
Status: corev1.ConditionFalse,
Reason: "ClusterClaimed",
Message: "Cluster claimed",
},
{
Type: hivev1.ClusterRunningCondition,
Status: corev1.ConditionFalse,
Reason: "Resuming",
Message: "Waiting for cluster to be running",
},
},
},
{
name: "existing assignment does not change power state",
claim: initializedClaimBuilder.Build(testclaim.WithCluster(clusterName)),
Expand Down
Loading