private void cleanupAnyBackupSnapshots(final StorageSystem storage,final Volume volume) throws Exception {
  _log.info(String.format("cleanupAnyBackupSnapshots for volume [%s](%s)...",volume.getLabel(),volume.getId()));
  CIMObjectPath volumePath=_cimPath.getBlockObjectPath(storage,volume);
  if (_helper.checkExists(storage,volumePath,false,false) == null) {
    _log.info(String.format("cleanupAnyBackupSnapshots(%s, %s) -- volumePath does not exist, perhaps it has already been deleted?",storage.getSerialNumber(),volume.getLabel()));
    return;
  }
  CloseableIterator<CIMObjectPath> settingsIterator=null;
  try {
    settingsIterator=_helper.getReference(storage,volumePath,SmisConstants.CIM_SETTINGS_DEFINE_STATE,null);
    if (settingsIterator != null) {
      while (settingsIterator.hasNext()) {
        CIMObjectPath settingsPath=settingsIterator.next();
        CIMArgument[] outArgs=new CIMArgument[5];
        _helper.callModifySettingsDefineState(storage,_helper.getDeleteSettingsForSnapshotInputArguments(settingsPath,true),outArgs);
      }
    }
  }
  finally {
    if (settingsIterator != null) {
      settingsIterator.close();
    }
  }
}

private void cleanupAnyBackupSnapshots ( final StorageSystem storage , final Volume volume ) throws Exception { _log . info ( String . format ( "cleanupAnyBackupSnapshots for volume [%s](%s)..." , volume . getLabel ( ) , volume . getId ( ) ) ) ; CIMObjectPath volumePath = _cimPath . getBlockObjectPath ( storage , volume ) ; if ( _helper . checkExists ( storage , volumePath , false , false ) == null ) { _log . info ( String . format ( "cleanupAnyBackupSnapshots(%s, %s) -- volumePath does not exist, perhaps it has already been deleted?" , storage . getSerialNumber ( ) , volume . getLabel ( ) ) ) ; return ; } CloseableIterator < CIMObjectPath > settingsIterator = null ; try { settingsIterator = _helper . getReference ( storage , volumePath , SmisConstants . CIM_SETTINGS_DEFINE_STATE , null ) ; if ( settingsIterator != null ) { while ( settingsIterator . hasNext ( ) ) { CIMObjectPath settingsPath = settingsIterator . next ( ) ; CIMArgument [ ] outArgs = new CIMArgument [ 5 ] ; _helper . callModifySettingsDefineState ( storage , _helper . getDeleteSettingsForSnapshotInputArguments ( settingsPath , true ) , outArgs ) ; } } } finally { if ( settingsIterator != null ) { settingsIterator . close ( ) ; } } }
method will make synchronous smi - s calls to clean up any backup snapshots that may exist for the volume . typically , on vnx arrays , if there ' s a restore operation against an ' advanced ' snap , there will be backup snapshot created . there isn ' t any easy way to get to this backup using the smi - s api , so we ' ll have to clean them all up when we go to delete the volume .
