Search in sources :

Example 1 with HostDatastoreSystemMO

use of com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO in project cloudstack by apache.

the class VmwareStorageProcessor method getVmfsDatastore.

private ManagedObjectReference getVmfsDatastore(VmwareContext context, VmwareHypervisorHost hyperHost, String datastoreName, String storageIpAddress, int storagePortNumber, String iqn, String chapName, String chapSecret, String mutualChapName, String mutualChapSecret) throws Exception {
    ManagedObjectReference morCluster = hyperHost.getHyperHostCluster();
    ClusterMO cluster = new ClusterMO(context, morCluster);
    List<Pair<ManagedObjectReference, String>> lstHosts = cluster.getClusterHosts();
    HostInternetScsiHbaStaticTarget target = new HostInternetScsiHbaStaticTarget();
    target.setAddress(storageIpAddress);
    target.setPort(storagePortNumber);
    target.setIScsiName(iqn);
    if (StringUtils.isNotBlank(chapName) && StringUtils.isNotBlank(chapSecret)) {
        HostInternetScsiHbaAuthenticationProperties auth = new HostInternetScsiHbaAuthenticationProperties();
        String strAuthType = "chapRequired";
        auth.setChapAuthEnabled(true);
        auth.setChapInherited(false);
        auth.setChapAuthenticationType(strAuthType);
        auth.setChapName(chapName);
        auth.setChapSecret(chapSecret);
        if (StringUtils.isNotBlank(mutualChapName) && StringUtils.isNotBlank(mutualChapSecret)) {
            auth.setMutualChapInherited(false);
            auth.setMutualChapAuthenticationType(strAuthType);
            auth.setMutualChapName(mutualChapName);
            auth.setMutualChapSecret(mutualChapSecret);
        }
        target.setAuthenticationProperties(auth);
    }
    final List<HostInternetScsiHbaStaticTarget> lstTargets = new ArrayList<HostInternetScsiHbaStaticTarget>();
    lstTargets.add(target);
    addRemoveInternetScsiTargetsToAllHosts(context, true, lstTargets, lstHosts);
    rescanAllHosts(context, lstHosts);
    HostMO host = new HostMO(context, lstHosts.get(0).first());
    HostDatastoreSystemMO hostDatastoreSystem = host.getHostDatastoreSystemMO();
    ManagedObjectReference morDs = hostDatastoreSystem.findDatastoreByName(datastoreName);
    if (morDs != null) {
        return morDs;
    }
    rescanAllHosts(context, lstHosts);
    HostStorageSystemMO hostStorageSystem = host.getHostStorageSystemMO();
    List<HostScsiDisk> lstHostScsiDisks = hostDatastoreSystem.queryAvailableDisksForVmfs();
    HostScsiDisk hostScsiDisk = getHostScsiDisk(hostStorageSystem.getStorageDeviceInfo().getScsiTopology(), lstHostScsiDisks, iqn);
    if (hostScsiDisk == null) {
        // check to see if the datastore actually does exist already
        morDs = hostDatastoreSystem.findDatastoreByName(datastoreName);
        if (morDs != null) {
            return morDs;
        }
        throw new Exception("A relevant SCSI disk could not be located to use to create a datastore.");
    }
    morDs = hostDatastoreSystem.createVmfsDatastore(datastoreName, hostScsiDisk);
    if (morDs != null) {
        rescanAllHosts(context, lstHosts);
        return morDs;
    }
    throw new Exception("Unable to create a datastore");
}
Also used : HostMO(com.cloud.hypervisor.vmware.mo.HostMO) HostInternetScsiHbaStaticTarget(com.vmware.vim25.HostInternetScsiHbaStaticTarget) ArrayList(java.util.ArrayList) HostDatastoreSystemMO(com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO) ClusterMO(com.cloud.hypervisor.vmware.mo.ClusterMO) RemoteException(java.rmi.RemoteException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) HostInternetScsiHbaAuthenticationProperties(com.vmware.vim25.HostInternetScsiHbaAuthenticationProperties) HostScsiDisk(com.vmware.vim25.HostScsiDisk) HostStorageSystemMO(com.cloud.hypervisor.vmware.mo.HostStorageSystemMO) ManagedObjectReference(com.vmware.vim25.ManagedObjectReference) Pair(com.cloud.utils.Pair)

Example 2 with HostDatastoreSystemMO

use of com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO in project cloudstack by apache.

the class VmwareStorageProcessor method prepareManagedDatastore.

private ManagedObjectReference prepareManagedDatastore(VmwareContext context, VmwareHypervisorHost hyperHost, String diskUuid, String iScsiName, String storageHost, int storagePort, String chapInitiatorUsername, String chapInitiatorSecret, String chapTargetUsername, String chapTargetSecret) throws Exception {
    if (storagePort == DEFAULT_NFS_PORT) {
        s_logger.info("creating the NFS datastore with the following configuration - storageHost: " + storageHost + ", storagePort: " + storagePort + ", exportpath: " + iScsiName + "and diskUuid : " + diskUuid);
        ManagedObjectReference morCluster = hyperHost.getHyperHostCluster();
        ClusterMO cluster = new ClusterMO(context, morCluster);
        List<Pair<ManagedObjectReference, String>> lstHosts = cluster.getClusterHosts();
        HostMO host = new HostMO(context, lstHosts.get(0).first());
        HostDatastoreSystemMO hostDatastoreSystem = host.getHostDatastoreSystemMO();
        return hostDatastoreSystem.createNfsDatastore(storageHost, storagePort, iScsiName, diskUuid);
    } else {
        return getVmfsDatastore(context, hyperHost, VmwareResource.getDatastoreName(iScsiName), storageHost, storagePort, trimIqn(iScsiName), chapInitiatorUsername, chapInitiatorSecret, chapTargetUsername, chapTargetSecret);
    }
}
Also used : HostMO(com.cloud.hypervisor.vmware.mo.HostMO) HostDatastoreSystemMO(com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO) ClusterMO(com.cloud.hypervisor.vmware.mo.ClusterMO) ManagedObjectReference(com.vmware.vim25.ManagedObjectReference) Pair(com.cloud.utils.Pair)

Aggregations

ClusterMO (com.cloud.hypervisor.vmware.mo.ClusterMO)2 HostDatastoreSystemMO (com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO)2 HostMO (com.cloud.hypervisor.vmware.mo.HostMO)2 Pair (com.cloud.utils.Pair)2 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)2 HostStorageSystemMO (com.cloud.hypervisor.vmware.mo.HostStorageSystemMO)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1 HostInternetScsiHbaAuthenticationProperties (com.vmware.vim25.HostInternetScsiHbaAuthenticationProperties)1 HostInternetScsiHbaStaticTarget (com.vmware.vim25.HostInternetScsiHbaStaticTarget)1 HostScsiDisk (com.vmware.vim25.HostScsiDisk)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 RemoteException (java.rmi.RemoteException)1 ArrayList (java.util.ArrayList)1