Search in sources :

Example 1 with HostScsiDisk

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

the class HostDatastoreSystemMO method createVmfsDatastore.

public ManagedObjectReference createVmfsDatastore(String datastoreName, HostScsiDisk hostScsiDisk) throws Exception {
    // just grab the first instance of VmfsDatastoreOption
    VmfsDatastoreOption vmfsDatastoreOption = _context.getService().queryVmfsDatastoreCreateOptions(_mor, hostScsiDisk.getDevicePath(), 5).get(0);
    VmfsDatastoreCreateSpec vmfsDatastoreCreateSpec = (VmfsDatastoreCreateSpec) vmfsDatastoreOption.getSpec();
    // set the name of the datastore to be created
    vmfsDatastoreCreateSpec.getVmfs().setVolumeName(datastoreName);
    return _context.getService().createVmfsDatastore(_mor, vmfsDatastoreCreateSpec);
}
Also used : VmfsDatastoreOption(com.vmware.vim25.VmfsDatastoreOption) VmfsDatastoreCreateSpec(com.vmware.vim25.VmfsDatastoreCreateSpec)

Example 2 with HostScsiDisk

use of com.vmware.vim25.HostScsiDisk 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)

Aggregations

ClusterMO (com.cloud.hypervisor.vmware.mo.ClusterMO)1 HostDatastoreSystemMO (com.cloud.hypervisor.vmware.mo.HostDatastoreSystemMO)1 HostMO (com.cloud.hypervisor.vmware.mo.HostMO)1 HostStorageSystemMO (com.cloud.hypervisor.vmware.mo.HostStorageSystemMO)1 Pair (com.cloud.utils.Pair)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 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)1 VmfsDatastoreCreateSpec (com.vmware.vim25.VmfsDatastoreCreateSpec)1 VmfsDatastoreOption (com.vmware.vim25.VmfsDatastoreOption)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 RemoteException (java.rmi.RemoteException)1 ArrayList (java.util.ArrayList)1