You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by GitBox <gi...@apache.org> on 2022/04/22 20:06:51 UTC

[GitHub] [cloudstack] GutoVeronezi commented on a diff in pull request #5938: VR: remove old json config when start vmware/xenserver VPC VRs

GutoVeronezi commented on code in PR #5938:
URL: https://github.com/apache/cloudstack/pull/5938#discussion_r856531949


##########
plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java:
##########
@@ -1804,9 +1804,43 @@ protected CheckSshAnswer execute(CheckSshCommand cmd) {
             networkUsage(privateIp, "create", null);
         }
 
+        if (VirtualMachineName.isValidRouterName(vmName)) {
+            reconfigureDomainRouterAfterStart(vmName);
+        }
+
         return new CheckSshAnswer(cmd);
     }
 
+    private void reconfigureDomainRouterAfterStart(String vmName) {
+        s_logger.debug("Reconfigure to remove machine.id from domain router after start. vmName: " + vmName);
+        VmwareContext context = getServiceContext();
+        try {
+            VmwareHypervisorHost hyperHost = getHyperHost(context);
+            VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
+            if (vmMo == null) {
+                if (hyperHost instanceof HostMO) {
+                    ClusterMO clusterMo = new ClusterMO(hyperHost.getContext(), ((HostMO) hyperHost).getParentMor());
+                    vmMo = clusterMo.findVmOnHyperHost(vmName);
+                }
+            }

Review Comment:
   ```suggestion
               if (vmMo == null && hyperHost instanceof HostMO) {
                   ClusterMO clusterMo = new ClusterMO(hyperHost.getContext(), ((HostMO) hyperHost).getParentMor());
                   vmMo = clusterMo.findVmOnHyperHost(vmName);
               }
   ```



##########
plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java:
##########
@@ -1804,9 +1804,43 @@ protected CheckSshAnswer execute(CheckSshCommand cmd) {
             networkUsage(privateIp, "create", null);
         }
 
+        if (VirtualMachineName.isValidRouterName(vmName)) {
+            reconfigureDomainRouterAfterStart(vmName);
+        }
+
         return new CheckSshAnswer(cmd);
     }
 
+    private void reconfigureDomainRouterAfterStart(String vmName) {
+        s_logger.debug("Reconfigure to remove machine.id from domain router after start. vmName: " + vmName);
+        VmwareContext context = getServiceContext();
+        try {
+            VmwareHypervisorHost hyperHost = getHyperHost(context);
+            VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
+            if (vmMo == null) {
+                if (hyperHost instanceof HostMO) {
+                    ClusterMO clusterMo = new ClusterMO(hyperHost.getContext(), ((HostMO) hyperHost).getParentMor());
+                    vmMo = clusterMo.findVmOnHyperHost(vmName);
+                }
+            }
+            if (vmMo == null) {
+                String msg = "VM " + vmName + " no longer exists to execute UnPlugNic command";
+                s_logger.error(msg);
+                throw new Exception(msg);
+            }
+            VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
+            OptionValue option = new OptionValue();
+            option.setKey("machine.id");
+            option.setValue("");
+            vmConfigSpec.getExtraConfig().add(option);
+            if (!vmMo.configureVm(vmConfigSpec)) {
+                throw new Exception("Failed to reconfigure domain router after start. vmName: " + vmName);
+            }
+        } catch (Exception e) {
+            s_logger.error("Unexpected exception when reconfigure domain router after start: ", e);

Review Comment:
   We can add the name of the VM to the log and pass the exception as parameter.



##########
plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java:
##########
@@ -1804,9 +1804,43 @@ protected CheckSshAnswer execute(CheckSshCommand cmd) {
             networkUsage(privateIp, "create", null);
         }
 
+        if (VirtualMachineName.isValidRouterName(vmName)) {
+            reconfigureDomainRouterAfterStart(vmName);
+        }
+
         return new CheckSshAnswer(cmd);
     }
 
+    private void reconfigureDomainRouterAfterStart(String vmName) {
+        s_logger.debug("Reconfigure to remove machine.id from domain router after start. vmName: " + vmName);
+        VmwareContext context = getServiceContext();
+        try {
+            VmwareHypervisorHost hyperHost = getHyperHost(context);
+            VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
+            if (vmMo == null) {
+                if (hyperHost instanceof HostMO) {
+                    ClusterMO clusterMo = new ClusterMO(hyperHost.getContext(), ((HostMO) hyperHost).getParentMor());
+                    vmMo = clusterMo.findVmOnHyperHost(vmName);
+                }
+            }
+            if (vmMo == null) {
+                String msg = "VM " + vmName + " no longer exists to execute UnPlugNic command";
+                s_logger.error(msg);
+                throw new Exception(msg);
+            }
+            VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
+            OptionValue option = new OptionValue();
+            option.setKey("machine.id");
+            option.setValue("");
+            vmConfigSpec.getExtraConfig().add(option);
+            if (!vmMo.configureVm(vmConfigSpec)) {
+                throw new Exception("Failed to reconfigure domain router after start. vmName: " + vmName);

Review Comment:
   We could instantiate a more specific exception.



##########
plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java:
##########
@@ -1804,9 +1804,43 @@ protected CheckSshAnswer execute(CheckSshCommand cmd) {
             networkUsage(privateIp, "create", null);
         }
 
+        if (VirtualMachineName.isValidRouterName(vmName)) {
+            reconfigureDomainRouterAfterStart(vmName);
+        }
+
         return new CheckSshAnswer(cmd);
     }
 
+    private void reconfigureDomainRouterAfterStart(String vmName) {
+        s_logger.debug("Reconfigure to remove machine.id from domain router after start. vmName: " + vmName);
+        VmwareContext context = getServiceContext();
+        try {
+            VmwareHypervisorHost hyperHost = getHyperHost(context);
+            VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
+            if (vmMo == null) {
+                if (hyperHost instanceof HostMO) {
+                    ClusterMO clusterMo = new ClusterMO(hyperHost.getContext(), ((HostMO) hyperHost).getParentMor());
+                    vmMo = clusterMo.findVmOnHyperHost(vmName);
+                }
+            }
+            if (vmMo == null) {
+                String msg = "VM " + vmName + " no longer exists to execute UnPlugNic command";
+                s_logger.error(msg);
+                throw new Exception(msg);

Review Comment:
   We could instantiate a more specific exception.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org