From e32f226432e953bb086c5ba5ce37970fea207e3a Mon Sep 17 00:00:00 2001 From: Shubham Varshney Date: Tue, 7 May 2024 16:54:15 +0530 Subject: [PATCH] [BACKPORT 2.21.1.3269][PLAT-13808] Pass machineImage for disk update operation from the java layer Summary: Passes the machineImage if present in the nodeDetails as the args for disk update operation. The order is - 1. use the machineImage present in the nodeDetails. 2. Fallback to the AMI present in the bundle. 3. Use the AMI id present in the host. Depends on - D34811 Original Commit - https://github.com/yugabyte/yugabyte-db/commit/69655868a9fc2a97ba1a1dcd6b86dad76ce43857 Test Plan: Created a universe using machineImage on the fly. Deleted the AMI from the console. Performed disk update - verified that it fails. Performed VM Image Upgrade. Peformed disk update - Verified that it passes. Reviewers: muthu, daniel, yshchetinin Reviewed By: yshchetinin Subscribers: yugaware Tags: #jenkins-ready Differential Revision: https://phorge.dev.yugabyte.com/D34823 --- .../commissioner/tasks/UniverseDefinitionTaskBase.java | 4 ++++ .../yw/commissioner/tasks/UniverseTaskBase.java | 3 +++ .../commissioner/tasks/subtasks/InstanceActions.java | 1 + .../tasks/subtasks/UpdateMountedDisks.java | 4 +++- .../main/java/com/yugabyte/yw/common/NodeManager.java | 10 ++++++++-- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseDefinitionTaskBase.java b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseDefinitionTaskBase.java index 3dc021b41c87..40c9b21053ce 100644 --- a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseDefinitionTaskBase.java +++ b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseDefinitionTaskBase.java @@ -1004,6 +1004,10 @@ public SubTaskGroup createUpdateDiskSizeTasks( .deviceInfo .numVolumes; } + + if (StringUtils.isNotEmpty(node.machineImage)) { + params.machineImage = node.machineImage; + } // Add the universe uuid. params.setUniverseUUID(taskParams().getUniverseUUID()); // Add the az uuid. diff --git a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseTaskBase.java b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseTaskBase.java index e86194a220ce..17098fd69a91 100644 --- a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseTaskBase.java +++ b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/UniverseTaskBase.java @@ -2595,6 +2595,9 @@ protected SubTaskGroup createUpdateMountedDisksTask( params.azUuid = node.azUuid; params.instanceType = currentInstanceType; params.deviceInfo = currentDeviceInfo; + if (StringUtils.isNotEmpty(node.machineImage)) { + params.machineImage = node.machineImage; + } UpdateMountedDisks updateMountedDisksTask = createTask(UpdateMountedDisks.class); updateMountedDisksTask.initialize(params); diff --git a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/InstanceActions.java b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/InstanceActions.java index 91cfc88eab16..9947b3f8a295 100644 --- a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/InstanceActions.java +++ b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/InstanceActions.java @@ -31,6 +31,7 @@ public static class Params extends NodeTaskParams { // CSV of tag keys to be deleted. public String deleteTags = ""; public boolean force = false; + public String machineImage; } @Override diff --git a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/UpdateMountedDisks.java b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/UpdateMountedDisks.java index f749bb4fef73..29547b2fe4a0 100644 --- a/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/UpdateMountedDisks.java +++ b/managed/src/main/java/com/yugabyte/yw/commissioner/tasks/subtasks/UpdateMountedDisks.java @@ -17,7 +17,9 @@ protected UpdateMountedDisks(BaseTaskDependencies baseTaskDependencies) { super(baseTaskDependencies); } - public static class Params extends NodeTaskParams {} + public static class Params extends NodeTaskParams { + public String machineImage; + } @Override protected Params taskParams() { diff --git a/managed/src/main/java/com/yugabyte/yw/common/NodeManager.java b/managed/src/main/java/com/yugabyte/yw/common/NodeManager.java index 06365d136866..f09a2ac31e49 100644 --- a/managed/src/main/java/com/yugabyte/yw/common/NodeManager.java +++ b/managed/src/main/java/com/yugabyte/yw/common/NodeManager.java @@ -2286,7 +2286,10 @@ public ShellResponse nodeCommand(NodeCommandType type, NodeTaskParams nodeTaskPa throw new RuntimeException("NodeTaskParams is not InstanceActions.Params"); } InstanceActions.Params taskParam = (InstanceActions.Params) nodeTaskParam; - if (toOverwriteNodeProperties != null) { + if (StringUtils.isNotEmpty(taskParam.machineImage)) { + commandArgs.add("--machine_image"); + commandArgs.add(taskParam.machineImage); + } else if (toOverwriteNodeProperties != null) { String ybImage = toOverwriteNodeProperties.getMachineImage(); if (StringUtils.isNotBlank(ybImage)) { commandArgs.add("--machine_image"); @@ -2309,7 +2312,10 @@ public ShellResponse nodeCommand(NodeCommandType type, NodeTaskParams nodeTaskPa throw new RuntimeException("NodeTaskParams is not UpdateMountedDisksTask.Params"); } UpdateMountedDisks.Params taskParam = (UpdateMountedDisks.Params) nodeTaskParam; - if (toOverwriteNodeProperties != null) { + if (StringUtils.isNotEmpty(taskParam.machineImage)) { + commandArgs.add("--machine_image"); + commandArgs.add(taskParam.machineImage); + } else if (toOverwriteNodeProperties != null) { String ybImage = toOverwriteNodeProperties.getMachineImage(); if (StringUtils.isNotBlank(ybImage)) { commandArgs.add("--machine_image");