Search in sources :

Example 1 with DatastoreHostMount

use of com.vmware.vim25.DatastoreHostMount in project coprhd-controller by CoprHD.

the class VMwareSupport method getHostsForDatastore.

/**
 * Gets the hosts for the given datastore.
 *
 * @param datastore
 *            the datastore.
 * @return the hosts.
 */
public List<HostSystem> getHostsForDatastore(Datastore datastore) {
    List<HostSystem> hosts = Lists.newArrayList();
    DatastoreHostMount[] hostMounts = datastore.getHost();
    if (hostMounts != null) {
        for (DatastoreHostMount hostMount : hostMounts) {
            HostSystem host = vcenterAPI.lookupManagedEntity(hostMount.key);
            if (host != null) {
                hosts.add(host);
            }
        }
    }
    return hosts;
}
Also used : HostSystem(com.vmware.vim25.mo.HostSystem) DatastoreHostMount(com.vmware.vim25.DatastoreHostMount)

Example 2 with DatastoreHostMount

use of com.vmware.vim25.DatastoreHostMount in project cloudstack by apache.

the class DatastoreMO method isAccessibleToHost.

public boolean isAccessibleToHost(String hostValue) throws Exception {
    boolean isAccessible = true;
    List<DatastoreHostMount> hostMounts = getHostMounts();
    for (DatastoreHostMount hostMount : hostMounts) {
        String hostMountValue = hostMount.getKey().getValue();
        if (hostMountValue.equalsIgnoreCase(hostValue)) {
            HostMountInfo mountInfo = hostMount.getMountInfo();
            isAccessible = mountInfo.isAccessible();
            break;
        }
    }
    return isAccessible;
}
Also used : HostMountInfo(com.vmware.vim25.HostMountInfo) DatastoreHostMount(com.vmware.vim25.DatastoreHostMount)

Example 3 with DatastoreHostMount

use of com.vmware.vim25.DatastoreHostMount in project coprhd-controller by CoprHD.

the class VMwareUtils method getHostsForDatastore.

/**
 * Gets the hosts attached to the specified datastore.
 *
 * @param vcenter
 *            the vcenter API.
 * @param datastore
 *            the datastore
 * @return the list of hosts attached to the datastore.
 */
public static List<HostSystem> getHostsForDatastore(VCenterAPI vcenter, Datastore datastore) {
    List<HostSystem> hosts = Lists.newArrayList();
    DatastoreHostMount[] mounts = datastore.getHost();
    if (mounts != null && mounts.length > 0) {
        for (DatastoreHostMount mount : mounts) {
            HostSystem host = vcenter.lookupManagedEntity(mount.getKey());
            if (host != null) {
                hosts.add(host);
            }
        }
    }
    return hosts;
}
Also used : HostSystem(com.vmware.vim25.mo.HostSystem) DatastoreHostMount(com.vmware.vim25.DatastoreHostMount)

Example 4 with DatastoreHostMount

use of com.vmware.vim25.DatastoreHostMount in project photon-model by vmware.

the class InstanceDiskClient method uploadISOContents.

/**
 * Uploads ISO content into the chosen datastore
 */
public DeferredResult<DiskService.DiskStateExpanded> uploadISOContents(byte[] contentToUpload) throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg, InvalidDatastoreFaultMsg, FileFaultFaultMsg, FinderException {
    try {
        // 1) fetch data store for the disk
        String dsName = this.context.datastoreName;
        if (dsName == null || dsName.isEmpty()) {
            dsName = ClientUtils.getDefaultDatastore(this.finder);
        }
        String dataStoreName = dsName;
        List<Element> datastoreList = this.finder.datastoreList(dataStoreName);
        ManagedObjectReference dsFromSp;
        Optional<Element> datastoreOpt = datastoreList.stream().findFirst();
        if (datastoreOpt.isPresent()) {
            dsFromSp = datastoreOpt.get().object;
        } else {
            throw new IllegalArgumentException(String.format("No Datastore [%s] present on datacenter", dataStoreName));
        }
        // 2) Get available hosts for direct upload
        String hostName = null;
        ArrayOfDatastoreHostMount dsHosts = this.get.entityProp(dsFromSp, VimPath.res_host);
        if (dsHosts != null && dsHosts.getDatastoreHostMount() != null) {
            DatastoreHostMount dsHost = dsHosts.getDatastoreHostMount().stream().filter(hostMount -> hostMount.getMountInfo() != null && hostMount.getMountInfo().isAccessible() && hostMount.getMountInfo().isMounted()).findFirst().orElse(null);
            if (dsHost != null) {
                hostName = this.get.entityProp(dsHost.getKey(), VimPath.host_summary_config_name);
            }
        }
        if (hostName == null) {
            throw new IllegalStateException(String.format("No host found to upload ISO content " + "for Data Store Disk %s", dataStoreName));
        }
        // 3) Choose some unique filename
        String filename = ClientUtils.getUniqueName(ISO_FILE) + ISO_EXTENSION;
        // 4 ) Choose some unique folder name and create it.
        String folderName = ClientUtils.getUniqueName(ISO_FOLDER);
        ClientUtils.createFolder(this.connection, this.context.datacenterMoRef, String.format(VM_PATH_FORMAT, dataStoreName, folderName));
        // 5) form the upload url and acquire generic service ticket for it
        String isoUrl = String.format(ISO_UPLOAD_URL, hostName, VimUtils.encode(folderName), VimUtils.encode(filename), VimUtils.encode(dataStoreName));
        String ticket = this.connection.getGenericServiceTicket(isoUrl);
        // 6) create external client that accepts all certificates
        TrustManager[] trustManagers = new TrustManager[] { ClientUtils.getDefaultTrustManager() };
        ServiceClient serviceClient = ClientUtils.getCustomServiceClient(trustManagers, this.host, URI.create(isoUrl), this.getClass().getSimpleName());
        // 7) PUT operation for the iso content
        Operation putISO = Operation.createPut(URI.create(isoUrl));
        putISO.setContentType(MEDIA_TYPE_APPLICATION_OCTET_STREAM).setContentLength(contentToUpload.length).addRequestHeader("Cookie", "vmware_cgi_ticket=" + ticket).setBody(contentToUpload).setReferer(this.host.getUri());
        return serviceClient.sendWithDeferredResult(putISO).thenApply(op -> {
            String diskFullPath = String.format(FULL_PATH, dataStoreName, folderName, filename);
            // Update the details of the disk
            CustomProperties.of(this.diskState).put(DISK_FULL_PATH, diskFullPath).put(DISK_PARENT_DIRECTORY, String.format(PARENT_DIR, dataStoreName, folderName)).put(DISK_DATASTORE_NAME, dataStoreName);
            this.diskState.sourceImageReference = VimUtils.datastorePathToUri(diskFullPath);
            return this.diskState;
        });
    } catch (Exception e) {
        return DeferredResult.failed(e);
    }
}
Also used : Element(com.vmware.photon.controller.model.adapters.vsphere.util.finders.Element) Operation(com.vmware.xenon.common.Operation) FinderException(com.vmware.photon.controller.model.adapters.vsphere.util.finders.FinderException) TrustManager(javax.net.ssl.TrustManager) ArrayOfDatastoreHostMount(com.vmware.vim25.ArrayOfDatastoreHostMount) ServiceClient(com.vmware.xenon.common.ServiceClient) DatastoreHostMount(com.vmware.vim25.DatastoreHostMount) ArrayOfDatastoreHostMount(com.vmware.vim25.ArrayOfDatastoreHostMount) ManagedObjectReference(com.vmware.vim25.ManagedObjectReference)

Example 5 with DatastoreHostMount

use of com.vmware.vim25.DatastoreHostMount in project coprhd-controller by CoprHD.

the class VerifyDatastoreForRemoval method checkDatastoreAccessibility.

private void checkDatastoreAccessibility(DatastoreHostMount mount) {
    HostMountInfo mountInfo = mount.getMountInfo();
    if (mountInfo.getAccessible() == Boolean.FALSE) {
        HostSystem host = vcenter.lookupManagedEntity(mount.getKey());
        String hostName = host.getName();
        String reason = StringUtils.defaultIfBlank(mountInfo.getInaccessibleReason(), "unknown");
        logWarn("verify.datastore.removal.inaccessible", hostName, reason);
    }
}
Also used : HostMountInfo(com.vmware.vim25.HostMountInfo) HostSystem(com.vmware.vim25.mo.HostSystem)

Aggregations

DatastoreHostMount (com.vmware.vim25.DatastoreHostMount)4 HostSystem (com.vmware.vim25.mo.HostSystem)3 HostMountInfo (com.vmware.vim25.HostMountInfo)2 Element (com.vmware.photon.controller.model.adapters.vsphere.util.finders.Element)1 FinderException (com.vmware.photon.controller.model.adapters.vsphere.util.finders.FinderException)1 ArrayOfDatastoreHostMount (com.vmware.vim25.ArrayOfDatastoreHostMount)1 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)1 Operation (com.vmware.xenon.common.Operation)1 ServiceClient (com.vmware.xenon.common.ServiceClient)1 TrustManager (javax.net.ssl.TrustManager)1