@Override public void handlePatch(Operation patch) { ServiceUtils.logInfo(this, "Handling patch for service %s", getSelfLink()); KubernetesClusterCreateTask currentState = getState(patch); KubernetesClusterCreateTask patchState = patch.getBody(KubernetesClusterCreateTask.class); validatePatchState(currentState, patchState); PatchUtils.patchState(currentState, patchState); validateStartState(currentState); patch.complete(); try { if (ControlFlags.isOperationProcessingDisabled(currentState.controlFlags)) { ServiceUtils.logInfo(this, "Skipping patch handling (disabled)"); } else if (TaskState.TaskStage.STARTED == currentState.taskState.stage) { processStateMachine(currentState); } } catch (Throwable t) { failTask(t); } }
@Override public void handleStart(Operation start) { ServiceUtils.logInfo(this, "Starting service %s", getSelfLink()); KubernetesClusterCreateTask startState = start.getBody(KubernetesClusterCreateTask.class); InitializationUtils.initialize(startState); validateStartState(startState); if (startState.taskState.stage == TaskState.TaskStage.CREATED) { startState.taskState.stage = TaskState.TaskStage.STARTED; startState.taskState.subStage = TaskState.SubStage.ALLOCATE_RESOURCES; } start.setBody(startState).complete(); try { if (ControlFlags.isOperationProcessingDisabled(startState.controlFlags)) { ServiceUtils.logInfo(this, "Skipping start operation processing (disabled)"); } else if (TaskState.TaskStage.STARTED == startState.taskState.stage) { TaskUtils.sendSelfPatch( this, buildPatch(startState.taskState.stage, TaskState.SubStage.ALLOCATE_RESOURCES)); } } catch (Throwable t) { failTask(t); } }