question: protected List < VolumeDescriptor > createChangeVirtualPoolDescriptors ( StorageSystem vplexSystem , Volume volume , VirtualPool newVpool , String taskId , List < Recommendation > recommendations , VirtualPoolCapabilityValuesWrapper capabilities , ControllerOperationValuesWrapper operationsWrapper ) throws InternalException { URI volumeVarrayURI = volume . getVirtualArray ( ) ; VirtualArray volumeVarray = _dbClient . queryObject ( VirtualArray . class , volumeVarrayURI ) ; s_logger . info ( "Virtual volume varray is {}" , volumeVarrayURI ) ; URI volumeVpoolURI = volume . getVirtualPool ( ) ; VirtualPool currentVpool = _dbClient . queryObject ( VirtualPool . class , volumeVpoolURI ) ; List < VolumeDescriptor > descriptors = new ArrayList < VolumeDescriptor > ( ) ; VolumeDescriptor vplexVirtualVolumeDesc = new VolumeDescriptor ( VolumeDescriptor . Type . VPLEX_VIRT_VOLUME , volume . getStorageController ( ) , volume . getId ( ) , volume . getPool ( ) , null ) ; Map < String , Object > volumeParams = new HashMap < String , Object > ( ) ; volumeParams . put ( VolumeDescriptor . PARAM_VPOOL_CHANGE_EXISTING_VOLUME_ID , volume . getId ( ) ) ; volumeParams . put ( VolumeDescriptor . PARAM_VPOOL_CHANGE_NEW_VPOOL_ID , newVpool . getId ( ) ) ; volumeParams . put ( VolumeDescriptor . PARAM_VPOOL_CHANGE_OLD_VPOOL_ID , volume . getVirtualPool ( ) ) ; if ( operationsWrapper != null ) { if ( operationsWrapper . getMigrationSuspendBeforeCommit ( ) != null ) { volumeParams . put ( VolumeDescriptor . PARAM_MIGRATION_SUSPEND_BEFORE_COMMIT , operationsWrapper . getMigrationSuspendBeforeCommit ( ) ) ; } if ( operationsWrapper . getMigrationSuspendBeforeDeleteSource ( ) != null ) { volumeParams . put ( VolumeDescriptor . PARAM_MIGRATION_SUSPEND_BEFORE_DELETE_SOURCE , operationsWrapper . getMigrationSuspendBeforeDeleteSource ( ) ) ; } } vplexVirtualVolumeDesc . setParameters ( volumeParams ) ; descriptors . add ( vplexVirtualVolumeDesc ) ; if ( VirtualPoolChangeAnalyzer . vpoolChangeRequiresMigration ( currentVpool , newVpool ) ) { Volume migSrcVolume = getAssociatedVolumeInVArray ( volume , volumeVarrayURI ) ; descriptors . addAll ( createBackendVolumeMigrationDescriptors ( vplexSystem , volume , migSrcVolume , volumeVarray , newVpool , getVolumeCapacity ( migSrcVolume != null ? migSrcVolume : volume ) , taskId , recommendations , false , capabilities ) ) ; } URI haVarrayURI = VirtualPoolChangeAnalyzer . getHaVarrayURI ( currentVpool ) ; if ( haVarrayURI != null ) { VirtualArray haVarray = _dbClient . queryObject ( VirtualArray . class , haVarrayURI ) ; VirtualPool currentHaVpool = VirtualPoolChangeAnalyzer . getHaVpool ( currentVpool , _dbClient ) ; VirtualPool newHaVpool = VirtualPoolChangeAnalyzer . getNewHaVpool ( currentVpool , newVpool , _dbClient ) ; if ( VirtualPoolChangeAnalyzer . vpoolChangeRequiresMigration ( currentHaVpool , newHaVpool ) ) { Volume migSrcVolume = getAssociatedVolumeInVArray ( volume , haVarrayURI ) ; descriptors . addAll ( createBackendVolumeMigrationDescriptors ( vplexSystem , volume , migSrcVolume , haVarray , newHaVpool , getVolumeCapacity ( migSrcVolume != null ? migSrcVolume : volume ) , taskId , recommendations , true , capabilities ) ) ; } } return descriptors ; }
target:  Change the VirtualPool for the passed virtual volume on the passed VPlex storage system.