server: set VirtualMachineTO arch from template if present (#11530)

* server: set VirtualMachineTO arch from template if present

Fixes #11529

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* refactor

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

---------

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
diff --git a/server/src/main/java/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/main/java/com/cloud/hypervisor/HypervisorGuruBase.java
index c510502..4f14fe2 100644
--- a/server/src/main/java/com/cloud/hypervisor/HypervisorGuruBase.java
+++ b/server/src/main/java/com/cloud/hypervisor/HypervisorGuruBase.java
@@ -23,6 +23,7 @@
 
 import javax.inject.Inject;
 
+import com.cloud.cpu.CPU;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.domain.Domain;
@@ -307,10 +308,15 @@
         to.setNics(nics);
         to.setDisks(vmProfile.getDisks().toArray(new DiskTO[vmProfile.getDisks().size()]));
 
-        if (vmProfile.getTemplate().getBits() == 32) {
-            to.setArch("i686");
+        CPU.CPUArch templateArch = vmProfile.getTemplate().getArch();
+        if (templateArch != null) {
+            to.setArch(templateArch.getType());
         } else {
-            to.setArch("x86_64");
+            if (vmProfile.getTemplate().getBits() == 32) {
+                to.setArch(CPU.CPUArch.x86.getType());
+            } else {
+                to.setArch(CPU.CPUArch.amd64.getType());
+            }
         }
 
         Map<String, String> detailsInVm = _userVmDetailsDao.listDetailsKeyPairs(vm.getId());