diff --git a/controllers/ocimachine_controller.go b/controllers/ocimachine_controller.go index 2c0596f2..7cf01262 100644 --- a/controllers/ocimachine_controller.go +++ b/controllers/ocimachine_controller.go @@ -326,8 +326,9 @@ func (r *OCIMachineReconciler) reconcileNormal(ctx context.Context, logger logr. machineScope.Info("Instance is pending") conditions.MarkFalse(machineScope.OCIMachine, infrastructurev1beta2.InstanceReadyCondition, infrastructurev1beta2.InstanceNotReadyReason, clusterv1.ConditionSeverityInfo, "") return reconcile.Result{RequeueAfter: 10 * time.Second}, nil - case core.InstanceLifecycleStateStopping, core.InstanceLifecycleStateStopped: + case core.InstanceLifecycleStateStopping, core.InstanceLifecycleStateStopped, core.InstanceLifecycleStateMoving: machineScope.SetNotReady() + machineScope.Info(fmt.Sprintf("Instance is in %s state and not ready", instance.LifecycleState)) conditions.MarkFalse(machineScope.OCIMachine, infrastructurev1beta2.InstanceReadyCondition, infrastructurev1beta2.InstanceNotReadyReason, clusterv1.ConditionSeverityInfo, "") return reconcile.Result{}, nil case core.InstanceLifecycleStateRunning: diff --git a/controllers/ocimachine_controller_test.go b/controllers/ocimachine_controller_test.go index 9bba4d56..db24eac0 100644 --- a/controllers/ocimachine_controller_test.go +++ b/controllers/ocimachine_controller_test.go @@ -334,6 +334,22 @@ func TestNormalReconciliationFunction(t *testing.T) { }, nil) }, }, + { + name: "instance in moving state", + errorExpected: false, + conditionAssertion: []conditionAssertion{{infrastructurev1beta2.InstanceReadyCondition, corev1.ConditionFalse, clusterv1.ConditionSeverityInfo, infrastructurev1beta2.InstanceNotReadyReason}}, + testSpecificSetup: func(t *test, machineScope *scope.MachineScope, computeClient *mock_compute.MockComputeClient, vcnClient *mock_vcn.MockClient, nlbclient *mock_nlb.MockNetworkLoadBalancerClient) { + computeClient.EXPECT().GetInstance(gomock.Any(), gomock.Eq(core.GetInstanceRequest{ + InstanceId: common.String("test"), + })). + Return(core.GetInstanceResponse{ + Instance: core.Instance{ + Id: common.String("test"), + LifecycleState: core.InstanceLifecycleStateMoving, + }, + }, nil) + }, + }, { name: "instance in terminated state", errorExpected: true,