@Test public void getFromBackend_BasicTest() throws Exception { final String volId = "foo"; final SANVolumeInfo existing = new SANVolumeInfo(volId).withSanVolumeId("fooprefix" + volId + "foosuffix"); try (TransactionResource tran = Entities.transactionFor(SANInfo.class)) { Entities.persist(existing); tran.commit(); } final int volSz = 5; final SANProvider sanProvider = context.mock(SANProvider.class); context.checking(new Expectations() { { oneOf(sanProvider).snapshotExists(existing.getSanVolumeId(), null); will(returnValue(Boolean.TRUE)); } }); SANManager test = new SANManager(sanProvider); boolean result = test.getFromBackend(volId, volSz); assertTrue("expected result to be true", result); }
public boolean getFromBackend(String snapshotId, int size) throws EucalyptusCloudException { SANVolumeInfo snapInfo = new SANVolumeInfo(snapshotId); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { SANVolumeInfo foundSnapInfo = Entities.uniqueResult(snapInfo); if (foundSnapInfo == null || StringUtils.isBlank(foundSnapInfo.getSanVolumeId())) { throw new EucalyptusCloudException("Backend ID not found for " + snapshotId); } LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { LOG.debug("Found database record and backend resource for " + snapshotId + ". Nothing to do here"); return true; } else { LOG.debug("Found database record but resource does not exist on backend. Deleting database record for " + snapshotId); Entities.delete(foundSnapInfo); tran.commit(); } } catch (Exception ex) { } snapInfo.setScName(null); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { List<SANVolumeInfo> foundSnapInfos = Entities.query(snapInfo); for (SANVolumeInfo foundSnapInfo : foundSnapInfos) { LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { SANVolumeInfo newSnapInfo = new SANVolumeInfo(snapshotId, foundSnapInfo.getIqn(), foundSnapInfo.getSize()) .withSanVolumeId(foundSnapInfo.getSanVolumeId()).withSnapshotOf(foundSnapInfo.getSnapshotOf()); Entities.persist(newSnapInfo); tran.commit(); return true; } } } catch (Exception ex) { } return false; }
SANManager implements LogicalStorageManager { public boolean getFromBackend(String snapshotId, int size) throws EucalyptusCloudException { SANVolumeInfo snapInfo = new SANVolumeInfo(snapshotId); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { SANVolumeInfo foundSnapInfo = Entities.uniqueResult(snapInfo); if (foundSnapInfo == null || StringUtils.isBlank(foundSnapInfo.getSanVolumeId())) { throw new EucalyptusCloudException("Backend ID not found for " + snapshotId); } LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { LOG.debug("Found database record and backend resource for " + snapshotId + ". Nothing to do here"); return true; } else { LOG.debug("Found database record but resource does not exist on backend. Deleting database record for " + snapshotId); Entities.delete(foundSnapInfo); tran.commit(); } } catch (Exception ex) { } snapInfo.setScName(null); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { List<SANVolumeInfo> foundSnapInfos = Entities.query(snapInfo); for (SANVolumeInfo foundSnapInfo : foundSnapInfos) { LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { SANVolumeInfo newSnapInfo = new SANVolumeInfo(snapshotId, foundSnapInfo.getIqn(), foundSnapInfo.getSize()) .withSanVolumeId(foundSnapInfo.getSanVolumeId()).withSnapshotOf(foundSnapInfo.getSnapshotOf()); Entities.persist(newSnapInfo); tran.commit(); return true; } } } catch (Exception ex) { } return false; } }
SANManager implements LogicalStorageManager { public boolean getFromBackend(String snapshotId, int size) throws EucalyptusCloudException { SANVolumeInfo snapInfo = new SANVolumeInfo(snapshotId); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { SANVolumeInfo foundSnapInfo = Entities.uniqueResult(snapInfo); if (foundSnapInfo == null || StringUtils.isBlank(foundSnapInfo.getSanVolumeId())) { throw new EucalyptusCloudException("Backend ID not found for " + snapshotId); } LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { LOG.debug("Found database record and backend resource for " + snapshotId + ". Nothing to do here"); return true; } else { LOG.debug("Found database record but resource does not exist on backend. Deleting database record for " + snapshotId); Entities.delete(foundSnapInfo); tran.commit(); } } catch (Exception ex) { } snapInfo.setScName(null); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { List<SANVolumeInfo> foundSnapInfos = Entities.query(snapInfo); for (SANVolumeInfo foundSnapInfo : foundSnapInfos) { LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { SANVolumeInfo newSnapInfo = new SANVolumeInfo(snapshotId, foundSnapInfo.getIqn(), foundSnapInfo.getSize()) .withSanVolumeId(foundSnapInfo.getSanVolumeId()).withSnapshotOf(foundSnapInfo.getSnapshotOf()); Entities.persist(newSnapInfo); tran.commit(); return true; } } } catch (Exception ex) { } return false; } SANManager();   SANManager(SANProvider connectionManager); }
SANManager implements LogicalStorageManager { public boolean getFromBackend(String snapshotId, int size) throws EucalyptusCloudException { SANVolumeInfo snapInfo = new SANVolumeInfo(snapshotId); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { SANVolumeInfo foundSnapInfo = Entities.uniqueResult(snapInfo); if (foundSnapInfo == null || StringUtils.isBlank(foundSnapInfo.getSanVolumeId())) { throw new EucalyptusCloudException("Backend ID not found for " + snapshotId); } LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { LOG.debug("Found database record and backend resource for " + snapshotId + ". Nothing to do here"); return true; } else { LOG.debug("Found database record but resource does not exist on backend. Deleting database record for " + snapshotId); Entities.delete(foundSnapInfo); tran.commit(); } } catch (Exception ex) { } snapInfo.setScName(null); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { List<SANVolumeInfo> foundSnapInfos = Entities.query(snapInfo); for (SANVolumeInfo foundSnapInfo : foundSnapInfos) { LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { SANVolumeInfo newSnapInfo = new SANVolumeInfo(snapshotId, foundSnapInfo.getIqn(), foundSnapInfo.getSize()) .withSanVolumeId(foundSnapInfo.getSanVolumeId()).withSnapshotOf(foundSnapInfo.getSnapshotOf()); Entities.persist(newSnapInfo); tran.commit(); return true; } } } catch (Exception ex) { } return false; } SANManager();   SANManager(SANProvider connectionManager); static LogicalStorageManager getInstance(); void addSnapshot(String snapshotId); void checkPreconditions(); @Override void cleanSnapshot(String snapshotId, String snapshotPointId); void cleanVolume(String volumeId); void configure(); StorageResource createSnapshot(String volumeId, String snapshotId, String snapshotPointId, Boolean shouldTransferSnapshots); void createSnapshot(String volumeId, String snapshotId, String snapshotPointId); void createVolume(String volumeId, int size); int createVolume(String volumeId, String snapshotId, int size); void cloneVolume(String volumeId, String parentVolumeId); @Override void deleteSnapshot(String snapshotId, String snapshotPointId); void deleteVolume(String volumeId); int getSnapshotSize(String snapshotId); String getVolumeConnectionString(String volumeId); void initialize(); void loadSnapshots(List<String> snapshotSet, List<String> snapshotFileNames); List<String> prepareForTransfer(String snapshotId); void reload(); void startupChecks(); void finishVolume(String snapshotId); StorageResourceWithCallback prepSnapshotForDownload(final String snapshotId, int sizeExpected, long actualSizeInMB); ArrayList<ComponentProperty> getStorageProps(); void setStorageProps(ArrayList<ComponentProperty> storageProps); String getStorageRootDirectory(); String getVolumePath(String volumeId); void importVolume(String volumeId, String volumePath, int size); String getSnapshotPath(String snapshotId); void importSnapshot(String snapshotId, String volumeId, String snapPath, int size); String exportVolume(String volumeId, String nodeIqn); void unexportVolumeFromAll(String volumeId); void unexportVolume(String volumeId, String nodeIqn); void checkReady(); void stop(); void disable(); void enable(); boolean getFromBackend(String snapshotId, int size); void checkVolume(String volumeId); List<CheckerTask> getCheckers(); String createSnapshotPoint(String parentVolumeId, String volumeId); void deleteSnapshotPoint(String parentVolumeId, String volumeId, String snapshotPointId); @Override boolean supportsIncrementalSnapshots(); @Override StorageResourceWithCallback prepIncrementalSnapshotForUpload(String volumeId, String snapshotId, String snapPointId, String prevSnapshotId,
      String prevSnapPointId); @Override StorageResource prepSnapshotForUpload(String volumeId, String snapshotId, String snapPointId); @Override StorageResourceWithCallback prepSnapshotBaseForRestore(final String snapshotId, final int size, final String snapshotPointId); @Override void restoreSnapshotDelta(String currentSnapId, String prevSnapId, String baseId, StorageResource sr); @Override void completeSnapshotRestorationFromDeltas(String snapshotId); @Override T executeCallback(Function<F, T> callback, F input); }
SANManager implements LogicalStorageManager { public boolean getFromBackend(String snapshotId, int size) throws EucalyptusCloudException { SANVolumeInfo snapInfo = new SANVolumeInfo(snapshotId); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { SANVolumeInfo foundSnapInfo = Entities.uniqueResult(snapInfo); if (foundSnapInfo == null || StringUtils.isBlank(foundSnapInfo.getSanVolumeId())) { throw new EucalyptusCloudException("Backend ID not found for " + snapshotId); } LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { LOG.debug("Found database record and backend resource for " + snapshotId + ". Nothing to do here"); return true; } else { LOG.debug("Found database record but resource does not exist on backend. Deleting database record for " + snapshotId); Entities.delete(foundSnapInfo); tran.commit(); } } catch (Exception ex) { } snapInfo.setScName(null); try (TransactionResource tran = Entities.transactionFor(SANVolumeInfo.class)) { List<SANVolumeInfo> foundSnapInfos = Entities.query(snapInfo); for (SANVolumeInfo foundSnapInfo : foundSnapInfos) { LOG.info("Checking for " + foundSnapInfo.getSanVolumeId() + " on backend"); if (connectionManager.snapshotExists(foundSnapInfo.getSanVolumeId(), foundSnapInfo.getIqn())) { SANVolumeInfo newSnapInfo = new SANVolumeInfo(snapshotId, foundSnapInfo.getIqn(), foundSnapInfo.getSize()) .withSanVolumeId(foundSnapInfo.getSanVolumeId()).withSnapshotOf(foundSnapInfo.getSnapshotOf()); Entities.persist(newSnapInfo); tran.commit(); return true; } } } catch (Exception ex) { } return false; } SANManager();   SANManager(SANProvider connectionManager); static LogicalStorageManager getInstance(); void addSnapshot(String snapshotId); void checkPreconditions(); @Override void cleanSnapshot(String snapshotId, String snapshotPointId); void cleanVolume(String volumeId); void configure(); StorageResource createSnapshot(String volumeId, String snapshotId, String snapshotPointId, Boolean shouldTransferSnapshots); void createSnapshot(String volumeId, String snapshotId, String snapshotPointId); void createVolume(String volumeId, int size); int createVolume(String volumeId, String snapshotId, int size); void cloneVolume(String volumeId, String parentVolumeId); @Override void deleteSnapshot(String snapshotId, String snapshotPointId); void deleteVolume(String volumeId); int getSnapshotSize(String snapshotId); String getVolumeConnectionString(String volumeId); void initialize(); void loadSnapshots(List<String> snapshotSet, List<String> snapshotFileNames); List<String> prepareForTransfer(String snapshotId); void reload(); void startupChecks(); void finishVolume(String snapshotId); StorageResourceWithCallback prepSnapshotForDownload(final String snapshotId, int sizeExpected, long actualSizeInMB); ArrayList<ComponentProperty> getStorageProps(); void setStorageProps(ArrayList<ComponentProperty> storageProps); String getStorageRootDirectory(); String getVolumePath(String volumeId); void importVolume(String volumeId, String volumePath, int size); String getSnapshotPath(String snapshotId); void importSnapshot(String snapshotId, String volumeId, String snapPath, int size); String exportVolume(String volumeId, String nodeIqn); void unexportVolumeFromAll(String volumeId); void unexportVolume(String volumeId, String nodeIqn); void checkReady(); void stop(); void disable(); void enable(); boolean getFromBackend(String snapshotId, int size); void checkVolume(String volumeId); List<CheckerTask> getCheckers(); String createSnapshotPoint(String parentVolumeId, String volumeId); void deleteSnapshotPoint(String parentVolumeId, String volumeId, String snapshotPointId); @Override boolean supportsIncrementalSnapshots(); @Override StorageResourceWithCallback prepIncrementalSnapshotForUpload(String volumeId, String snapshotId, String snapPointId, String prevSnapshotId,
      String prevSnapPointId); @Override StorageResource prepSnapshotForUpload(String volumeId, String snapshotId, String snapPointId); @Override StorageResourceWithCallback prepSnapshotBaseForRestore(final String snapshotId, final int size, final String snapshotPointId); @Override void restoreSnapshotDelta(String currentSnapId, String prevSnapId, String baseId, StorageResource sr); @Override void completeSnapshotRestorationFromDeltas(String snapshotId); @Override T executeCallback(Function<F, T> callback, F input);  }