This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 6ad17393be9fefd1886bb43ea824c2ed031b5e14
Merge: ed6ee6b704f a4263da8aea
Author: Daan Hoogland <[email protected]>
AuthorDate: Fri Jul 25 17:13:17 2025 +0200

    Merge branch '4.19' into 4.20

 .../command/user/config/ListCapabilitiesCmd.java   |   1 +
 .../api/response/CapabilitiesResponse.java         |   8 +
 .../com/cloud/agent/api/CheckVolumeAnswer.java     |  15 +-
 .../cloud/agent/api/CopyRemoteVolumeAnswer.java    |  15 +-
 .../wrapper/LibvirtCheckVolumeCommandWrapper.java  |  80 ++++-
 .../LibvirtCopyRemoteVolumeCommandWrapper.java     |  81 ++++-
 .../LibvirtGetVolumesOnStorageCommandWrapper.java  |  66 ++--
 .../wrapper/LibvirtResizeVolumeCommandWrapper.java |  19 +-
 .../hypervisor/kvm/storage/KVMPhysicalDisk.java    |  33 ++
 plugins/storage/volume/linstor/CHANGELOG.md        |   6 +
 .../kvm/storage/LinstorStorageAdaptor.java         |   2 +-
 .../driver/LinstorPrimaryDataStoreDriverImpl.java  |  12 +-
 .../java/com/cloud/api/query/QueryManagerImpl.java |  28 +-
 .../cloud/api/query/dao/TemplateJoinDaoImpl.java   |   7 +-
 .../com/cloud/server/ManagementServerImpl.java     |   1 +
 .../cloudstack/vm/UnmanagedVMsManagerImpl.java     |  37 +-
 .../storage/resource/HttpUploadServerHandler.java  |  12 +-
 .../plugins/linstor/test_linstor_volumes.py        |  73 +++-
 ui/src/components/view/InfoCard.vue                |   3 +
 ui/src/config/section/domain.js                    |   5 +
 ui/src/views/compute/DeployVM.vue                  |  14 +-
 ui/src/views/compute/DeployVnfAppliance.vue        |  14 +-
 ui/src/views/compute/EditVM.vue                    |  16 +-
 .../com/cloud/hypervisor/vmware/mo/HostMO.java     | 392 +--------------------
 24 files changed, 426 insertions(+), 514 deletions(-)

diff --cc 
api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java
index 0cecbb37020,4f036e89a64..bd3f39a09aa
--- 
a/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java
+++ 
b/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java
@@@ -70,8 -71,7 +70,9 @@@ public class ListCapabilitiesCmd extend
          response.setInstancesStatsUserOnly((Boolean) 
capabilities.get(ApiConstants.INSTANCES_STATS_USER_ONLY));
          response.setInstancesDisksStatsRetentionEnabled((Boolean) 
capabilities.get(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_ENABLED));
          response.setInstancesDisksStatsRetentionTime((Integer) 
capabilities.get(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_TIME));
 +        
response.setSharedFsVmMinCpuCount((Integer)capabilities.get(ApiConstants.SHAREDFSVM_MIN_CPU_COUNT));
 +        
response.setSharedFsVmMinRamSize((Integer)capabilities.get(ApiConstants.SHAREDFSVM_MIN_RAM_SIZE));
+         response.setDynamicScalingEnabled((Boolean) 
capabilities.get(ApiConstants.DYNAMIC_SCALING_ENABLED));
          response.setObjectName("capability");
          response.setResponseName(getCommandName());
          this.setResponseObject(response);
diff --cc 
api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java
index 3861ac455ed,83fb4f4b372..ff2e33b1389
--- 
a/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java
+++ 
b/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java
@@@ -128,14 -124,10 +128,18 @@@ public class CapabilitiesResponse exten
      @Param(description = "the retention time for Instances disks stats", 
since = "4.18.0")
      private Integer instancesDisksStatsRetentionTime;
  
 +    @SerializedName(ApiConstants.SHAREDFSVM_MIN_CPU_COUNT)
 +    @Param(description = "the min CPU count for the service offering used by 
the shared filesystem instance", since = "4.20.0")
 +    private Integer sharedFsVmMinCpuCount;
 +
 +    @SerializedName(ApiConstants.SHAREDFSVM_MIN_RAM_SIZE)
 +    @Param(description = "the min Ram size for the service offering used by 
the shared filesystem instance", since = "4.20.0")
 +    private Integer sharedFsVmMinRamSize;
 +
+     @SerializedName(ApiConstants.DYNAMIC_SCALING_ENABLED)
+     @Param(description = "true if dynamically scaling for instances is 
enabled", since = "4.21.0")
+     private Boolean dynamicScalingEnabled;
+ 
      public void setSecurityGroupsEnabled(boolean securityGroupsEnabled) {
          this.securityGroupsEnabled = securityGroupsEnabled;
      }
@@@ -240,11 -228,7 +244,15 @@@
          this.customHypervisorDisplayName = customHypervisorDisplayName;
      }
  
 +    public void setSharedFsVmMinCpuCount(Integer sharedFsVmMinCpuCount) {
 +        this.sharedFsVmMinCpuCount = sharedFsVmMinCpuCount;
 +    }
 +
 +    public void setSharedFsVmMinRamSize(Integer sharedFsVmMinRamSize) {
 +        this.sharedFsVmMinRamSize = sharedFsVmMinRamSize;
 +    }
++
+     public void setDynamicScalingEnabled(Boolean dynamicScalingEnabled) {
+         this.dynamicScalingEnabled = dynamicScalingEnabled;
+     }
  }
diff --cc 
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeCommandWrapper.java
index c8b0aafd0d6,2caf8da2914..14ea043aa97
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeCommandWrapper.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeCommandWrapper.java
@@@ -34,13 -35,22 +35,20 @@@ import org.apache.cloudstack.storage.vo
  import org.apache.cloudstack.utils.qemu.QemuImg;
  import org.apache.cloudstack.utils.qemu.QemuImgException;
  import org.apache.cloudstack.utils.qemu.QemuImgFile;
+ import org.apache.commons.collections.MapUtils;
+ import org.apache.commons.lang3.StringUtils;
 -import org.apache.log4j.Logger;
  import org.libvirt.LibvirtException;
  
+ import java.util.Arrays;
+ import java.util.HashMap;
+ import java.util.List;
  import java.util.Map;
  
  @ResourceWrapper(handles = CheckVolumeCommand.class)
  public final class LibvirtCheckVolumeCommandWrapper extends 
CommandWrapper<CheckVolumeCommand, Answer, LibvirtComputingResource> {
  
 -    private static final Logger s_logger = 
Logger.getLogger(LibvirtCheckVolumeCommandWrapper.class);
+     private static final List<Storage.StoragePoolType> 
STORAGE_POOL_TYPES_SUPPORTED = 
Arrays.asList(Storage.StoragePoolType.Filesystem, 
Storage.StoragePoolType.NetworkFilesystem);
+ 
      @Override
      public Answer execute(final CheckVolumeCommand command, final 
LibvirtComputingResource libvirtComputingResource) {
          String result = null;
@@@ -59,9 -74,8 +72,8 @@@
              } else {
                  return new Answer(command, false, "Unsupported Storage Pool");
              }
- 
          } catch (final Exception e) {
-             logger.error("Error while locating disk: "+ e.getMessage());
 -            s_logger.error("Error while checking the disk: " + 
e.getMessage());
++            logger.error("Error while locating disk: {}", e.getMessage());
              return new Answer(command, false, result);
          }
      }
diff --cc 
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyRemoteVolumeCommandWrapper.java
index e6ec05fec23,6edf5cbd906..df8727a7b31
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyRemoteVolumeCommandWrapper.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCopyRemoteVolumeCommandWrapper.java
@@@ -34,13 -35,22 +35,20 @@@ import org.apache.cloudstack.storage.vo
  import org.apache.cloudstack.utils.qemu.QemuImg;
  import org.apache.cloudstack.utils.qemu.QemuImgException;
  import org.apache.cloudstack.utils.qemu.QemuImgFile;
+ import org.apache.commons.collections.MapUtils;
+ import org.apache.commons.lang3.StringUtils;
 -import org.apache.log4j.Logger;
  import org.libvirt.LibvirtException;
  
+ import java.util.Arrays;
+ import java.util.HashMap;
+ import java.util.List;
  import java.util.Map;
  
  @ResourceWrapper(handles = CopyRemoteVolumeCommand.class)
  public final class LibvirtCopyRemoteVolumeCommandWrapper extends 
CommandWrapper<CopyRemoteVolumeCommand, Answer, LibvirtComputingResource> {
  
 -    private static final Logger s_logger = 
Logger.getLogger(LibvirtCopyRemoteVolumeCommandWrapper.class);
+     private static final List<Storage.StoragePoolType> 
STORAGE_POOL_TYPES_SUPPORTED = 
Arrays.asList(Storage.StoragePoolType.Filesystem, 
Storage.StoragePoolType.NetworkFilesystem);
+ 
      @Override
      public Answer execute(final CopyRemoteVolumeCommand command, final 
LibvirtComputingResource libvirtComputingResource) {
          String srcIp = command.getRemoteIp();
@@@ -55,37 -65,80 +63,80 @@@
          int timeoutInSecs = command.getWait();
  
          try {
-             if (storageFilerTO.getType() == 
Storage.StoragePoolType.Filesystem ||
-                     storageFilerTO.getType() == 
Storage.StoragePoolType.NetworkFilesystem) {
+             if 
(STORAGE_POOL_TYPES_SUPPORTED.contains(storageFilerTO.getType())) {
                  String filename = libvirtComputingResource.copyVolume(srcIp, 
username, password, dstPath, srcFile, tmpPath, timeoutInSecs);
-                 logger.debug("Volume " + srcFile + " copy successful, copied 
to file: " + filename);
 -                s_logger.debug("Volume " + srcFile + " copy successful, 
copied to file: " + filename);
++                logger.debug("Volume {} copy successful, copied to file: {}", 
srcFile, filename);
                  final KVMPhysicalDisk vol = pool.getPhysicalDisk(filename);
                  final String path = vol.getPath();
-                 long size = getVirtualSizeFromFile(path);
-                 return new CopyRemoteVolumeAnswer(command, "", filename, 
size);
+                 try {
+                     KVMPhysicalDisk.checkQcow2File(path);
+                 } catch (final CloudRuntimeException e) {
+                     return new CopyRemoteVolumeAnswer(command, false, "", 
filename, 0, getVolumeDetails(pool, vol));
+                 }
+ 
+                 long size = KVMPhysicalDisk.getVirtualSizeFromFile(path);
+                 return new CopyRemoteVolumeAnswer(command, true, "", 
filename, size, getVolumeDetails(pool, vol));
              } else {
                  String msg = "Unsupported storage pool type: " + 
storageFilerTO.getType().toString() + ", only local and NFS pools are 
supported";
                  return new Answer(command, false, msg);
              }
          } catch (final Exception e) {
-             logger.error("Error while copying volume file from remote host: " 
+ e.getMessage(), e);
 -            s_logger.error("Error while copying volume file from remote host: 
" + e.getMessage(), e);
++            logger.error("Error while copying volume file from remote host: 
{}", e.getMessage(), e);
              String msg = "Failed to copy volume due to: " + e.getMessage();
              return new Answer(command, false, msg);
          }
      }
  
-     private long getVirtualSizeFromFile(String path) {
+     private Map<VolumeOnStorageTO.Detail, String> 
getVolumeDetails(KVMStoragePool pool, KVMPhysicalDisk disk) {
+         Map<String, String> info = getDiskFileInfo(pool, disk, true);
+         if (MapUtils.isEmpty(info)) {
+             return null;
+         }
+ 
+         Map<VolumeOnStorageTO.Detail, String> volumeDetails = new HashMap<>();
+ 
+         String backingFilePath = info.get(QemuImg.BACKING_FILE);
+         if (StringUtils.isNotBlank(backingFilePath)) {
+             volumeDetails.put(VolumeOnStorageTO.Detail.BACKING_FILE, 
backingFilePath);
+         }
+         String backingFileFormat = info.get(QemuImg.BACKING_FILE_FORMAT);
+         if (StringUtils.isNotBlank(backingFileFormat)) {
+             volumeDetails.put(VolumeOnStorageTO.Detail.BACKING_FILE_FORMAT, 
backingFileFormat);
+         }
+         String clusterSize = info.get(QemuImg.CLUSTER_SIZE);
+         if (StringUtils.isNotBlank(clusterSize)) {
+             volumeDetails.put(VolumeOnStorageTO.Detail.CLUSTER_SIZE, 
clusterSize);
+         }
+         String fileFormat = info.get(QemuImg.FILE_FORMAT);
+         if (StringUtils.isNotBlank(fileFormat)) {
+             volumeDetails.put(VolumeOnStorageTO.Detail.FILE_FORMAT, 
fileFormat);
+         }
+         String encrypted = info.get(QemuImg.ENCRYPTED);
+         if (StringUtils.isNotBlank(encrypted) && 
encrypted.equalsIgnoreCase("yes")) {
+             volumeDetails.put(VolumeOnStorageTO.Detail.IS_ENCRYPTED, 
String.valueOf(Boolean.TRUE));
+         }
+         Boolean isLocked = isDiskFileLocked(pool, disk);
+         volumeDetails.put(VolumeOnStorageTO.Detail.IS_LOCKED, 
String.valueOf(isLocked));
+ 
+         return volumeDetails;
+     }
+ 
+     private Map<String, String> getDiskFileInfo(KVMStoragePool pool, 
KVMPhysicalDisk disk, boolean secure) {
+         if (!STORAGE_POOL_TYPES_SUPPORTED.contains(pool.getType())) {
+             return new HashMap<>(); // unknown
+         }
          try {
              QemuImg qemu = new QemuImg(0);
-             QemuImgFile qemuFile = new QemuImgFile(path);
-             Map<String, String> info = qemu.info(qemuFile);
-             if (info.containsKey(QemuImg.VIRTUAL_SIZE)) {
-                 return Long.parseLong(info.get(QemuImg.VIRTUAL_SIZE));
-             } else {
-                 throw new CloudRuntimeException("Unable to determine virtual 
size of volume at path " + path);
-             }
+             QemuImgFile qemuFile = new QemuImgFile(disk.getPath(), 
disk.getFormat());
+             return qemu.info(qemuFile, secure);
          } catch (QemuImgException | LibvirtException ex) {
-             throw new CloudRuntimeException("Error when inspecting volume at 
path " + path, ex);
 -            logger.error("Failed to get info of disk file: " + 
ex.getMessage());
++            logger.error("Failed to get info of disk file: {}", 
ex.getMessage());
+             return null;
          }
      }
+ 
+     private boolean isDiskFileLocked(KVMStoragePool pool, KVMPhysicalDisk 
disk) {
+         Map<String, String> info = getDiskFileInfo(pool, disk, false);
+         return info == null;
+     }
  }
diff --cc 
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtResizeVolumeCommandWrapper.java
index 6a3901e345c,aa1a0f41f1b..f2af46d4cc8
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtResizeVolumeCommandWrapper.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtResizeVolumeCommandWrapper.java
@@@ -33,8 -32,8 +32,7 @@@ import org.apache.cloudstack.utils.qemu
  import org.apache.cloudstack.utils.qemu.QemuImg;
  import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
  import org.apache.cloudstack.utils.qemu.QemuImgException;
- import org.apache.cloudstack.utils.qemu.QemuImgFile;
  import org.apache.cloudstack.utils.qemu.QemuObject;
 -import org.apache.log4j.Logger;
  import org.libvirt.Connect;
  import org.libvirt.Domain;
  import org.libvirt.DomainInfo;
diff --cc server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
index 7c8c9ae28c8,1d8e8687051..1a2090a6a77
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@@ -4504,8 -4455,8 +4507,8 @@@ public class QueryManagerImpl extends M
              listAll = true;
          }
  
 -        List<Long> permittedAccountIds = new ArrayList<Long>();
 +        List<Long> permittedAccountIds = new ArrayList<>();
-         Ternary<Long, Boolean, ListProjectResourcesCriteria> 
domainIdRecursiveListProject = new Ternary<>(cmd.getDomainId(), 
cmd.isRecursive(), null);
+         Ternary<Long, Boolean, ListProjectResourcesCriteria> 
domainIdRecursiveListProject = new Ternary<>(domainId, isRecursive, null);
          accountMgr.buildACLSearchParameters(
                  caller, id, cmd.getAccountName(), cmd.getProjectId(), 
permittedAccountIds,
                  domainIdRecursiveListProject, listAll, false
@@@ -4533,7 -4484,7 +4536,7 @@@
                  null, cmd.getPageSizeVal(), cmd.getStartIndex(), 
cmd.getZoneId(), cmd.getStoragePoolId(),
                  cmd.getImageStoreId(), hypervisorType, showDomr, 
cmd.listInReadyState(), permittedAccounts, caller,
                  listProjectResourcesCriteria, tags, showRemovedTmpl, 
cmd.getIds(), parentTemplateId, cmd.getShowUnique(),
-                 templateType, isVnf, cmd.getArch());
 -                templateType, isVnf, domainId, isRecursive);
++                templateType, isVnf, domainId, isRecursive, cmd.getArch());
      }
  
      private Pair<List<TemplateJoinVO>, Integer> 
searchForTemplatesInternal(Long templateId, String name, String keyword,
@@@ -4542,7 -4493,7 +4545,7 @@@
              boolean showDomr, boolean onlyReady, List<Account> 
permittedAccounts, Account caller,
              ListProjectResourcesCriteria listProjectResourcesCriteria, 
Map<String, String> tags,
              boolean showRemovedTmpl, List<Long> ids, Long parentTemplateId, 
Boolean showUnique, String templateType,
-             Boolean isVnf, CPU.CPUArch arch) {
 -            Boolean isVnf, Long domainId, boolean isRecursive) {
++            Boolean isVnf, Long domainId, boolean isRecursive, CPU.CPUArch 
arch) {
  
          // check if zone is configured, if not, just return empty list
          List<HypervisorType> hypers = null;
@@@ -4640,14 -4587,18 +4643,18 @@@
                  sc.addAnd("accountType", SearchCriteria.Op.EQ, 
Account.Type.PROJECT);
              }
  
-             // add criteria for domain path in case of domain admin
+             // add criteria for domain path in case of admins
              if ((templateFilter == TemplateFilter.self || templateFilter == 
TemplateFilter.selfexecutable)
-                     && (caller.getType() == Account.Type.DOMAIN_ADMIN || 
caller.getType() == Account.Type.RESOURCE_DOMAIN_ADMIN)) {
-                 sc.addAnd("domainPath", SearchCriteria.Op.LIKE, 
domain.getPath() + "%");
+                     && (accountMgr.isAdmin(caller.getAccountId()))) {
+                 if (isRecursive) {
+                     sc.addAnd("domainPath", SearchCriteria.Op.LIKE, 
domain.getPath() + "%");
+                 } else {
+                     sc.addAnd("domainPath", SearchCriteria.Op.EQ, 
domain.getPath());
+                 }
              }
  
 -            List<Long> relatedDomainIds = new ArrayList<Long>();
 -            List<Long> permittedAccountIds = new ArrayList<Long>();
 +            List<Long> relatedDomainIds = new ArrayList<>();
 +            List<Long> permittedAccountIds = new ArrayList<>();
              if (!permittedAccounts.isEmpty()) {
                  for (Account account : permittedAccounts) {
                      permittedAccountIds.add(account.getId());
@@@ -4973,7 -4926,8 +4982,8 @@@
          return searchForTemplatesInternal(cmd.getId(), cmd.getIsoName(), 
cmd.getKeyword(), isoFilter, true, cmd.isBootable(),
                  cmd.getPageSizeVal(), cmd.getStartIndex(), cmd.getZoneId(), 
cmd.getStoragePoolId(), cmd.getImageStoreId(),
                  hypervisorType, true, cmd.listInReadyState(), 
permittedAccounts, caller, listProjectResourcesCriteria,
-                 tags, showRemovedISO, null, null, cmd.getShowUnique(), null, 
null, cmd.getArch());
+                 tags, showRemovedISO, null, null, cmd.getShowUnique(), null, 
null,
 -                domainId, isRecursive);
++                domainId, isRecursive, cmd.getArch());
      }
  
      @Override
diff --cc vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
index 189797a3cb2,93a471d56bb..dd3f5dd3cb7
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/HostMO.java
@@@ -33,16 -34,16 +33,11 @@@ import com.vmware.vim25.AlreadyExistsFa
  import com.vmware.vim25.ClusterDasConfigInfo;
  import com.vmware.vim25.ComputeResourceSummary;
  import com.vmware.vim25.CustomFieldStringValue;
--import com.vmware.vim25.DatastoreSummary;
  import com.vmware.vim25.DynamicProperty;
  import com.vmware.vim25.GuestOsDescriptor;
  import com.vmware.vim25.HostConfigManager;
  import com.vmware.vim25.HostConnectInfo;
--import com.vmware.vim25.HostFirewallInfo;
--import com.vmware.vim25.HostFirewallRuleset;
  import com.vmware.vim25.HostHardwareSummary;
--import com.vmware.vim25.HostHyperThreadScheduleInfo;
--import com.vmware.vim25.HostIpConfig;
  import com.vmware.vim25.HostIpRouteEntry;
  import com.vmware.vim25.HostListSummaryQuickStats;
  import com.vmware.vim25.HostNetworkInfo;
@@@ -51,7 -52,7 +46,6 @@@ import com.vmware.vim25.HostNetworkSecu
  import com.vmware.vim25.HostNetworkTrafficShapingPolicy;
  import com.vmware.vim25.HostOpaqueNetworkInfo;
  import com.vmware.vim25.HostPortGroup;
--import com.vmware.vim25.HostPortGroupPort;
  import com.vmware.vim25.HostPortGroupSpec;
  import com.vmware.vim25.HostRuntimeInfo;
  import com.vmware.vim25.HostSystemConnectionState;
@@@ -61,57 -62,59 +55,41 @@@ import com.vmware.vim25.ManagedObjectRe
  import com.vmware.vim25.NasDatastoreInfo;
  import com.vmware.vim25.ObjectContent;
  import com.vmware.vim25.ObjectSpec;
--import com.vmware.vim25.OptionValue;
  import com.vmware.vim25.PropertyFilterSpec;
  import com.vmware.vim25.PropertySpec;
  import com.vmware.vim25.TraversalSpec;
  import com.vmware.vim25.VirtualMachineConfigSpec;
  import com.vmware.vim25.VirtualNicManagerNetConfig;
  import com.cloud.hypervisor.vmware.util.VmwareContext;
--import com.cloud.hypervisor.vmware.util.VmwareHelper;
  import com.cloud.utils.LogUtils;
  import com.cloud.utils.Pair;
  
  public class HostMO extends BaseMO implements VmwareHypervisorHost {
 -    private static final Logger s_logger = Logger.getLogger(HostMO.class);
      Map<String, VirtualMachineMO> _vmCache = new HashMap<>();
  
--    //Map<String, String> _vmInternalNameMapCache = new HashMap<String, 
String>();
--
      public HostMO(VmwareContext context, ManagedObjectReference morHost) {
          super(context, morHost);
      }
  
--    public HostMO(VmwareContext context, String morType, String morValue) {
--        super(context, morType, morValue);
--    }
--
      public HostHardwareSummary getHostHardwareSummary() throws Exception {
          HostConnectInfo hostInfo = 
_context.getService().queryHostConnectionInfo(_mor);
 -        HostHardwareSummary hardwareSummary = 
hostInfo.getHost().getHardware();
 -        return hardwareSummary;
 +        return hostInfo.getHost().getHardware();
      }
  
      public HostConfigManager getHostConfigManager() throws Exception {
 -        return 
(HostConfigManager)_context.getVimClient().getDynamicProperty(_mor, 
"configManager");
 -    }
 -
 -    public List<VirtualNicManagerNetConfig> 
getHostVirtualNicManagerNetConfig() throws Exception {
 -        return _context.getVimClient().getDynamicProperty(_mor, 
"config.virtualNicManagerInfo.netConfig");
 +        return _context.getVimClient().getDynamicProperty(_mor, 
"configManager");
      }
  
-     public List<VirtualNicManagerNetConfig> 
getHostVirtualNicManagerNetConfig() throws Exception {
-         return _context.getVimClient().getDynamicProperty(_mor, 
"config.virtualNicManagerInfo.netConfig");
-     }
- 
      public List<HostIpRouteEntry> getHostIpRouteEntries() throws Exception {
          return _context.getVimClient().getDynamicProperty(_mor, 
"config.network.routeTableInfo.ipRoute");
      }
  
      public HostListSummaryQuickStats getHostQuickStats() throws Exception {
 -        return 
(HostListSummaryQuickStats)_context.getVimClient().getDynamicProperty(_mor, 
"summary.quickStats");
 -    }
 -
 -    public HostHyperThreadScheduleInfo getHostHyperThreadInfo() throws 
Exception {
 -        return 
(HostHyperThreadScheduleInfo)_context.getVimClient().getDynamicProperty(_mor, 
"config.hyperThread");
 +        return _context.getVimClient().getDynamicProperty(_mor, 
"summary.quickStats");
      }
  
-     public HostHyperThreadScheduleInfo getHostHyperThreadInfo() throws 
Exception {
-         return _context.getVimClient().getDynamicProperty(_mor, 
"config.hyperThread");
-     }
- 
      public HostNetworkInfo getHostNetworkInfo() throws Exception {
 -        return 
(HostNetworkInfo)_context.getVimClient().getDynamicProperty(_mor, 
"config.network");
 +        return _context.getVimClient().getDynamicProperty(_mor, 
"config.network");
      }
  
      public HostPortGroupSpec getHostPortGroupSpec(String portGroupName) 
throws Exception {
@@@ -130,43 -133,43 +108,6 @@@
          return null;
      }
  
--    public List<HostPortGroupSpec> getHostPortGroupSpecs() throws Exception {
--        HostNetworkInfo hostNetInfo = getHostNetworkInfo();
--        if (hostNetInfo == null) {
--            return null;
--        }
--
--        List<HostPortGroup> portGroups = hostNetInfo.getPortgroup();
--        if (CollectionUtils.isEmpty(portGroups)) {
--            return null;
--        }
--
-         List<HostPortGroupSpec> portGroupSpecs = new ArrayList<>();
 -        List<HostPortGroupSpec> portGroupSpecs = new 
ArrayList<HostPortGroupSpec>();
--        for (HostPortGroup portGroup : portGroups) {
--            if (!isVMKernelPort(portGroup)) {
--                portGroupSpecs.add(portGroup.getSpec());
--            }
--        }
--
--        return portGroupSpecs;
--    }
--
--    private boolean isVMKernelPort(HostPortGroup portGroup) {
--        assert (portGroup != null);
--        List<HostPortGroupPort> ports = portGroup.getPort();
--        if (CollectionUtils.isEmpty(ports)) {
--            return false;
--        }
--
--        for (HostPortGroupPort port : ports) {
--            if (port.getType().equalsIgnoreCase("host")) {
--                return true;
--            }
--        }
--
--        return false;
--    }
--
      @Override
      public String getHyperHostName() throws Exception {
          return getName();
@@@ -214,53 -217,53 +155,18 @@@
          throw new Exception("Could not find host default gateway, host is not 
properly configured?");
      }
  
--    public HostStorageSystemMO getHostStorageSystemMO() throws Exception {
-         return new HostStorageSystemMO(_context, 
_context.getVimClient().getDynamicProperty(_mor, 
"configManager.storageSystem"));
 -        return new HostStorageSystemMO(_context, 
(ManagedObjectReference)_context.getVimClient().getDynamicProperty(_mor, 
"configManager.storageSystem"));
--    }
--
      public HostDatastoreSystemMO getHostDatastoreSystemMO() throws Exception {
 -        return new HostDatastoreSystemMO(_context, 
(ManagedObjectReference)_context.getVimClient().getDynamicProperty(_mor, 
"configManager.datastoreSystem"));
 -    }
 -
 -    public HostDatastoreBrowserMO getHostDatastoreBrowserMO() throws 
Exception {
 -        return new HostDatastoreBrowserMO(_context, 
(ManagedObjectReference)_context.getVimClient().getDynamicProperty(_mor, 
"datastoreBrowser"));
 -    }
 -
 -    private DatastoreMO getHostDatastoreMO(String datastoreName) throws 
Exception {
 -        ObjectContent[] ocs = getDatastorePropertiesOnHyperHost(new String[] 
{"name"});
 -        if (ocs != null && ocs.length > 0) {
 -            for (ObjectContent oc : ocs) {
 -                List<DynamicProperty> objProps = oc.getPropSet();
 -                if (objProps != null) {
 -                    for (DynamicProperty objProp : objProps) {
 -                        if (objProp.getVal().toString().equals(datastoreName))
 -                            return new DatastoreMO(_context, oc.getObj());
 -                    }
 -                }
 -            }
 -        }
 -        return null;
 +        return new HostDatastoreSystemMO(_context, 
_context.getVimClient().getDynamicProperty(_mor, 
"configManager.datastoreSystem"));
      }
  
-     public HostDatastoreBrowserMO getHostDatastoreBrowserMO() throws 
Exception {
-         return new HostDatastoreBrowserMO(_context, 
_context.getVimClient().getDynamicProperty(_mor, "datastoreBrowser"));
-     }
- 
-     private DatastoreMO getHostDatastoreMO(String datastoreName) throws 
Exception {
-         ObjectContent[] ocs = getDatastorePropertiesOnHyperHost(new String[] 
{"name"});
-         if (ocs != null) {
-             for (ObjectContent oc : ocs) {
-                 List<DynamicProperty> objProps = oc.getPropSet();
-                 if (objProps != null) {
-                     for (DynamicProperty objProp : objProps) {
-                         if (objProp.getVal().toString().equals(datastoreName))
-                             return new DatastoreMO(_context, oc.getObj());
-                     }
-                 }
-             }
-         }
-         return null;
-     }
- 
      public HostNetworkSystemMO getHostNetworkSystemMO() throws Exception {
          HostConfigManager configMgr = getHostConfigManager();
          return new HostNetworkSystemMO(_context, 
configMgr.getNetworkSystem());
      }
  
--    public HostFirewallSystemMO getHostFirewallSystemMO() throws Exception {
--        HostConfigManager configMgr = getHostConfigManager();
--        ManagedObjectReference morFirewall = configMgr.getFirewallSystem();
--
--        // only ESX hosts have firewall manager
--        if (morFirewall != null)
--            return new HostFirewallSystemMO(_context, morFirewall);
--        return null;
--    }
--
      @Override
      public ManagedObjectReference getHyperHostDatacenter() throws Exception {
          Pair<DatacenterMO, String> dcPair = 
DatacenterMO.getOwnerDatacenter(getContext(), getMor());
--        assert (dcPair != null);
          return dcPair.first().getMor();
      }
  
@@@ -282,19 -285,19 +188,6 @@@
          throw new Exception("Standalone host is not supported");
      }
  
--    public ManagedObjectReference[] getHostLocalDatastore() throws Exception {
--        List<ManagedObjectReference> datastores = 
_context.getVimClient().getDynamicProperty(_mor, "datastore");
-         List<ManagedObjectReference> l = new ArrayList<>();
 -        List<ManagedObjectReference> l = new 
ArrayList<ManagedObjectReference>();
--        if (datastores != null) {
--            for (ManagedObjectReference mor : datastores) {
-                 DatastoreSummary summary = 
_context.getVimClient().getDynamicProperty(mor, "summary");
 -                DatastoreSummary summary = 
(DatastoreSummary)_context.getVimClient().getDynamicProperty(mor, "summary");
--                if (summary.getType().equalsIgnoreCase("VMFS") && 
!summary.isMultipleHostAccess())
--                    l.add(mor);
--            }
--        }
--        return l.toArray(new ManagedObjectReference[1]);
--    }
--
      public HostVirtualSwitch getHostVirtualSwitchByName(String name) throws 
Exception {
          List<HostVirtualSwitch> switches = 
_context.getVimClient().getDynamicProperty(_mor, "config.network.vswitch");
  
@@@ -307,16 -310,21 +200,17 @@@
          return null;
      }
  
--    public List<HostVirtualSwitch> getHostVirtualSwitch() throws Exception {
--        return _context.getVimClient().getDynamicProperty(_mor, 
"config.network.vswitch");
--    }
--
      public AboutInfo getHostAboutInfo() throws Exception {
 -        return (AboutInfo)_context.getVimClient().getDynamicProperty(_mor, 
"config.product");
 +        return _context.getVimClient().getDynamicProperty(_mor, 
"config.product");
      }
  
      public VmwareHostType getHostType() throws Exception {
          AboutInfo aboutInfo = getHostAboutInfo();
+         if (aboutInfo == null) {
+             String msg = "no type info about host known, assuming ESXi";
 -            s_logger.warn(msg);
++            logger.warn(msg);
+             return VmwareHostType.ESXi;
+         }
          if ("VMware ESXi".equals(aboutInfo.getName()))
              return VmwareHostType.ESXi;
          else if ("VMware ESX".equals(aboutInfo.getName()))
@@@ -325,50 -333,50 +219,6 @@@
          throw new Exception("Unrecognized VMware host type " + 
aboutInfo.getName());
      }
  
--    // default virtual switch is which management network residents on
--    public HostVirtualSwitch getHostDefaultVirtualSwitch() throws Exception {
--        String managementPortGroup = 
getPortGroupNameByNicType(HostVirtualNicType.management);
--        if (managementPortGroup != null)
--            return getPortGroupVirtualSwitch(managementPortGroup);
--
--        return null;
--    }
--
--    public HostVirtualSwitch getPortGroupVirtualSwitch(String portGroupName) 
throws Exception {
--        String vSwitchName = getPortGroupVirtualSwitchName(portGroupName);
--        if (vSwitchName != null)
--            return getVirtualSwitchByName(vSwitchName);
--
--        return null;
--    }
--
--    public HostVirtualSwitch getVirtualSwitchByName(String vSwitchName) 
throws Exception {
--
--        List<HostVirtualSwitch> vSwitchs = getHostVirtualSwitch();
--        if (vSwitchs != null) {
--            for (HostVirtualSwitch vSwitch : vSwitchs) {
--                if (vSwitch.getName().equals(vSwitchName))
--                    return vSwitch;
--            }
--        }
--
--        return null;
--    }
--
--    public String getPortGroupVirtualSwitchName(String portGroupName) throws 
Exception {
--        HostNetworkInfo hostNetInfo = getHostNetworkInfo();
--        List<HostPortGroup> portGroups = hostNetInfo.getPortgroup();
--        if (portGroups != null) {
--            for (HostPortGroup portGroup : portGroups) {
--                HostPortGroupSpec spec = portGroup.getSpec();
--                if (spec.getName().equals(portGroupName))
--                    return spec.getVswitchName();
--            }
--        }
--
--        return null;
--    }
--
      public HostPortGroupSpec getPortGroupSpec(String portGroupName) throws 
Exception {
          HostNetworkInfo hostNetInfo = getHostNetworkInfo();
          List<HostPortGroup> portGroups = hostNetInfo.getPortgroup();
@@@ -383,40 -391,40 +233,6 @@@
          return null;
      }
  
--    public String getPortGroupNameByNicType(HostVirtualNicType nicType) 
throws Exception {
--        assert (nicType != null);
--
--        List<VirtualNicManagerNetConfig> netConfigs =
--                _context.getVimClient().getDynamicProperty(_mor, 
"config.virtualNicManagerInfo.netConfig");
--
--        if (netConfigs != null) {
--            for (VirtualNicManagerNetConfig netConfig : netConfigs) {
--                if (netConfig.getNicType().equals(nicType.toString())) {
--                    List<HostVirtualNic> nics = netConfig.getCandidateVnic();
--                    if (nics != null) {
--                        for (HostVirtualNic nic : nics) {
--                            return nic.getPortgroup();
--                        }
--                    }
--                }
--            }
--        }
--
--        if (nicType == HostVirtualNicType.management) {
--            // ESX management network is configured in service console
--            HostNetworkInfo netInfo = getHostNetworkInfo();
--            assert (netInfo != null);
--            List<HostVirtualNic> nics = netInfo.getConsoleVnic();
--            if (nics != null) {
--                for (HostVirtualNic nic : nics) {
--                    return nic.getPortgroup();
--                }
--            }
--        }
--
--        return null;
--    }
--
      public boolean hasOpaqueNSXNetwork() throws Exception{
          HostNetworkInfo netInfo = getHostNetworkInfo();
          List<HostOpaqueNetworkInfo> opaqueNetworks = 
netInfo.getOpaqueNetwork();
@@@ -451,7 -459,7 +267,7 @@@
  
          spec.setName(portGroupName);
          if (vlanId != null)
--            spec.setVlanId(vlanId.intValue());
++            spec.setVlanId(vlanId);
          HostNetworkPolicy policy = new HostNetworkPolicy();
          if (secPolicy != null)
              policy.setSecurity(secPolicy);
@@@ -471,7 -479,7 +287,7 @@@
  
          spec.setName(portGroupName);
          if (vlanId != null)
--            spec.setVlanId(vlanId.intValue());
++            spec.setVlanId(vlanId);
          HostNetworkPolicy policy = new HostNetworkPolicy();
          if (secPolicy != null)
              policy.setSecurity(secPolicy);
@@@ -481,13 -489,13 +297,6 @@@
          hostNetMo.updatePortGroup(portGroupName, spec);
      }
  
--    public void deletePortGroup(String portGroupName) throws Exception {
--        assert (portGroupName != null);
--        HostNetworkSystemMO hostNetMo = getHostNetworkSystemMO();
--        assert (hostNetMo != null);
--        hostNetMo.removePortGroup(portGroupName);
--    }
--
      public ManagedObjectReference getNetworkMor(String portGroupName) throws 
Exception {
          PropertySpec pSpec = new PropertySpec();
          pSpec.setType("Network");
@@@ -525,15 -533,15 +334,8 @@@
          return null;
      }
  
--    public List<ManagedObjectReference> getVmMorsOnNetwork(String 
portGroupName) throws Exception {
--        ManagedObjectReference morNetwork = getNetworkMor(portGroupName);
--        if (morNetwork != null)
--            return _context.getVimClient().getDynamicProperty(morNetwork, 
"vm");
--        return null;
--    }
--
      public String getHostName() throws Exception {
--        return (String)_context.getVimClient().getDynamicProperty(_mor, 
"name");
++        return _context.getVimClient().getDynamicProperty(_mor, "name");
      }
  
      @Override
@@@ -658,52 -666,52 +460,10 @@@
          return false;
      }
  
--    public HashMap<String, Integer> getVmVncPortsOnHost() throws Exception {
--
--        int key = getCustomFieldKey("VirtualMachine", 
CustomFieldConstants.CLOUD_VM_INTERNAL_NAME);
--        if (key == 0) {
-             logger.warn("Custom field " + 
CustomFieldConstants.CLOUD_VM_INTERNAL_NAME + " is not registered ?!");
 -            s_logger.warn("Custom field " + 
CustomFieldConstants.CLOUD_VM_INTERNAL_NAME + " is not registered ?!");
--        }
--
--        ObjectContent[] ocs = getVmPropertiesOnHyperHost(new String[] 
{"name", "config.extraConfig[\"RemoteDisplay.vnc.port\"]", "value[" + key + 
"]"});
--
-         HashMap<String, Integer> portInfo = new HashMap<>();
-         if (ocs != null) {
 -        HashMap<String, Integer> portInfo = new HashMap<String, Integer>();
 -        if (ocs != null && ocs.length > 0) {
--            for (ObjectContent oc : ocs) {
--                List<DynamicProperty> objProps = oc.getPropSet();
--                if (objProps != null) {
--                    String vmName = null;
--                    String value = null;
--                    String vmInternalCSName = null;
--                    for (DynamicProperty objProp : objProps) {
--                        if (objProp.getName().equals("name")) {
--                            vmName = (String)objProp.getVal();
--                        } else if (objProp.getName().startsWith("value[")) {
--                            if (objProp.getVal() != null)
--                                vmInternalCSName = 
((CustomFieldStringValue)objProp.getVal()).getValue();
--                        } else {
--                            OptionValue optValue = 
(OptionValue)objProp.getVal();
--                            value = (String)optValue.getValue();
--                        }
--                    }
--
--                    if (vmInternalCSName != null && 
isUserVMInternalCSName(vmInternalCSName))
--                        vmName = vmInternalCSName;
--
--                    if (vmName != null && value != null) {
--                        portInfo.put(vmName, Integer.parseInt(value));
--                    }
--                }
--            }
--        }
--
--        return portInfo;
--    }
--
      @Override
      public ObjectContent[] getVmPropertiesOnHyperHost(String[] propertyPaths) 
throws Exception {
 -        if (s_logger.isTraceEnabled())
 -            s_logger.trace("vCenter API trace - retrieveProperties() for VM 
properties. target MOR: " + _mor.getValue() + ", properties: " +
 +        if (logger.isTraceEnabled())
 +            logger.trace("vCenter API trace - retrieveProperties() for VM 
properties. target MOR: " + _mor.getValue() + ", properties: " +
                      new Gson().toJson(propertyPaths));
  
          PropertySpec pSpec = new PropertySpec();
@@@ -723,7 -731,7 +483,7 @@@
          PropertyFilterSpec pfSpec = new PropertyFilterSpec();
          pfSpec.getPropSet().add(pSpec);
          pfSpec.getObjectSet().add(oSpec);
--        List<PropertyFilterSpec> pfSpecArr = new 
ArrayList<PropertyFilterSpec>();
++        List<PropertyFilterSpec> pfSpecArr = new ArrayList<>();
          pfSpecArr.add(pfSpec);
  
          List<ObjectContent> properties = 
_context.getService().retrieveProperties(_context.getPropertyCollector(), 
pfSpecArr);
@@@ -756,7 -764,7 +516,7 @@@
          PropertyFilterSpec pfSpec = new PropertyFilterSpec();
          pfSpec.getPropSet().add(pSpec);
          pfSpec.getObjectSet().add(oSpec);
--        List<PropertyFilterSpec> pfSpecArr = new 
ArrayList<PropertyFilterSpec>();
++        List<PropertyFilterSpec> pfSpecArr = new ArrayList<>();
          pfSpecArr.add(pfSpec);
  
          List<ObjectContent> properties = 
_context.getService().retrieveProperties(_context.getPropertyCollector(), 
pfSpecArr);
@@@ -779,41 -787,41 +539,6 @@@
          return mounts;
      }
  
--    public List<Pair<ManagedObjectReference, String>> 
getLocalDatastoreOnHost() throws Exception {
-         List<Pair<ManagedObjectReference, String>> dsList = new ArrayList<>();
 -        List<Pair<ManagedObjectReference, String>> dsList = new 
ArrayList<Pair<ManagedObjectReference, String>>();
--
--        ObjectContent[] ocs = getDatastorePropertiesOnHyperHost(new String[] 
{"name", "summary"});
--        if (ocs != null) {
--            for (ObjectContent oc : ocs) {
--                DatastoreSummary dsSummary = 
(DatastoreSummary)VmwareHelper.getPropValue(oc, "summary");
--                if (dsSummary.isMultipleHostAccess() == false && 
dsSummary.isAccessible() && dsSummary.getType().equalsIgnoreCase("vmfs")) {
--                    ManagedObjectReference morDs = oc.getObj();
--                    String name = (String)VmwareHelper.getPropValue(oc, 
"name");
--
--                    if (!name.startsWith("-iqn.") && 
!name.startsWith("_iqn.")) {
-                         dsList.add(new Pair<>(morDs, name));
 -                        dsList.add(new Pair<ManagedObjectReference, 
String>(morDs, name));
--                    }
--                }
--            }
--        }
--        return dsList;
--    }
--
--    public void importVmFromOVF(String ovfFilePath, String vmName, String 
datastoreName, String diskOption, String configurationId) throws Exception {
-         if (logger.isTraceEnabled())
-             logger.trace("vCenter API trace - importVmFromOVF(). target MOR: 
" + _mor.getValue() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + vmName +
 -        if (s_logger.isTraceEnabled())
 -            s_logger.trace("vCenter API trace - importVmFromOVF(). target 
MOR: " + _mor.getValue() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + 
vmName +
--                    ",datastoreName: " + datastoreName + ", diskOption: " + 
diskOption);
--
--        DatastoreMO dsMo = getHostDatastoreMO(datastoreName);
--        if (dsMo == null)
--            throw new Exception("Invalid datastore name: " + datastoreName);
--
--        importVmFromOVF(ovfFilePath, vmName, dsMo, diskOption, 
configurationId);
--
-         if (logger.isTraceEnabled())
-             logger.trace("vCenter API trace - importVmFromOVF() done");
 -        if (s_logger.isTraceEnabled())
 -            s_logger.trace("vCenter API trace - importVmFromOVF() done");
--    }
--
      @Override
      public void importVmFromOVF(String ovfFilePath, String vmName, 
DatastoreMO dsMo, String diskOption, String configurationId) throws Exception {
  
@@@ -1105,19 -1113,19 +830,6 @@@
          return runtimeInfo != null && runtimeInfo.getConnectionState() == 
HostSystemConnectionState.CONNECTED;
      }
  
--    public boolean revertToSnapshot(ManagedObjectReference morSnapshot) 
throws Exception {
--        ManagedObjectReference morTask = 
_context.getService().revertToSnapshotTask(morSnapshot, _mor, false);
--        boolean result = _context.getVimClient().waitForTask(morTask);
--        if (result) {
--            _context.waitForTaskProgressDone(morTask);
--            return true;
--        } else {
-             logger.error("VMware revert to snapshot failed due to " + 
TaskMO.getTaskFailureInfo(_context, morTask));
 -            s_logger.error("VMware revert to snapshot failed due to " + 
TaskMO.getTaskFailureInfo(_context, morTask));
--        }
--
--        return false;
--    }
--
      @Override
      public LicenseAssignmentManagerMO getLicenseAssignmentManager() throws 
Exception {
          ManagedObjectReference licenseMgr;
@@@ -1131,28 -1139,28 +843,6 @@@
          return new LicenseAssignmentManagerMO(_context, 
licenseAssignmentManager);
      }
  
--    public void enableVncOnHostFirewall() throws Exception {
--        HostFirewallSystemMO firewallMo = getHostFirewallSystemMO();
--        boolean bRefresh = false;
--        if (firewallMo != null) {
--            HostFirewallInfo firewallInfo = firewallMo.getFirewallInfo();
--            if (firewallInfo != null && firewallInfo.getRuleset() != null) {
--                for (HostFirewallRuleset rule : firewallInfo.getRuleset()) {
--                    if ("vncServer".equalsIgnoreCase(rule.getKey())) {
--                        bRefresh = true;
--                        firewallMo.enableRuleset("vncServer");
--                    } else if ("gdbserver".equalsIgnoreCase(rule.getKey())) {
--                        bRefresh = true;
--                        firewallMo.enableRuleset("gdbserver");
--                    }
--                }
--            }
--
--            if (bRefresh)
--                firewallMo.refreshFirewall();
--        }
--    }
--
      @Override
      public String getRecommendedDiskController(String guestOsId) throws 
Exception {
          ManagedObjectReference morParent = getParentMor();
@@@ -1183,21 -1191,21 +873,6 @@@
          return null;
      }
  
--    public String getHostManagementIp(String managementPortGroup) throws 
Exception {
--        HostNetworkInfo netInfo = getHostNetworkInfo();
--
--        List<HostVirtualNic> nics = netInfo.getVnic();
--        for (HostVirtualNic nic : nics) {
--            if (nic.getPortgroup().equals(managementPortGroup)) {
--                HostIpConfig ipConfig = nic.getSpec().getIp();
--
--                return ipConfig.getIpAddress();
--            }
--        }
--
--        return null;
--    }
--
      public List<ManagedObjectReference> getHostNetworks() throws Exception {
          return _context.getVimClient().getDynamicProperty(_mor, "network");
      }
@@@ -1214,41 -1222,41 +889,6 @@@
          return networkName;
      }
  
--    public void createPortGroup(HostPortGroupSpec spec) throws Exception {
--        if (spec == null) {
--            return;
--        }
--
--        synchronized (_mor.getValue().intern()) {
--            HostNetworkSystemMO hostNetMo = getHostNetworkSystemMO();
--            if (hostNetMo == null) {
--                return;
--            }
--
--            ManagedObjectReference morNetwork = getNetworkMor(spec.getName());
--            if (morNetwork == null) {
--                hostNetMo.addPortGroup(spec);
--            }
--        }
--    }
--
--    public void copyPortGroupsFromHost(HostMO srcHost) throws Exception {
--        if (srcHost == null) {
--            return;
--        }
--
--        List<HostPortGroupSpec> portGroupSpecs = 
srcHost.getHostPortGroupSpecs();
--        if (CollectionUtils.isEmpty(portGroupSpecs)) {
-             logger.debug("No port groups in the host: " + srcHost.getName());
 -            s_logger.debug("No port groups in the host: " + 
srcHost.getName());
--            return;
--        }
--
--        for (HostPortGroupSpec spec : portGroupSpecs) {
-             logger.debug("Creating port group: " + spec.getName() + " in the 
host: " + getName());
 -            s_logger.debug("Creating port group: " + spec.getName() + " in 
the host: " + getName());
--            createPortGroup(spec);
--        }
--    }
--
      public void createPortGroup(HostVirtualSwitch vSwitch, String 
portGroupName, Integer vlanId,
              HostNetworkSecurityPolicy secPolicy, 
HostNetworkTrafficShapingPolicy shapingPolicy, long timeOutMs)
              throws Exception {
@@@ -1303,21 -1311,21 +943,9 @@@
          return morNetwork;
      }
  
--    public String getProductVersion() throws Exception {
--        return getHostAboutInfo().getVersion();
--    }
--
--    public boolean isUefiLegacySupported() throws Exception {
--        String hostVersion = getProductVersion();
--        if (hostVersion.compareTo(VmwareHelper.MIN_VERSION_UEFI_LEGACY) >= 0) 
{
--            return true;
--        }
--        return false;
--    }
--
      private synchronized VirtualMachineMO 
findVmOnHyperHostWithHypervisorName(String vmName) throws Exception {
 -        if (s_logger.isDebugEnabled())
 -            s_logger.debug("find VM hypervisor name: " + vmName + " on host");
 +        if (logger.isDebugEnabled())
 +            logger.debug("find VM hypervisor name: " + vmName + " on host");
  
          VirtualMachineMO vmMo = getVmWithHypervisorName(_vmCache.values(), 
vmName);
          if (vmMo != null) {

Reply via email to