@Override public boolean apply(Allocation allocInfo) throws MetadataException, AuthException, VerificationException { RunInstancesType msg = allocInfo.getRequest(); String imageId = msg.getImageId(); VmType vmType = allocInfo.getVmType(); try { BootableSet bootSet = Emis.newBootableSet(imageId); allocInfo.setBootableSet(bootSet); // Add (1024L * 1024L * 10) to handle NTFS min requirements. if (!bootSet.isBlockStorage()) { if (Platform.windows.equals(bootSet.getMachine().getPlatform()) && bootSet.getMachine().getImageSizeBytes() > ((1024L * 1024L * 1024L * vmType.getDisk()) + (1024L * 1024L * 10))) { throw new ImageInstanceTypeVerificationException( "Unable to run instance " + bootSet.getMachine().getDisplayName() + " in which the size " + bootSet.getMachine().getImageSizeBytes() + " bytes of the instance is greater than the vmType " + vmType.getDisplayName() + " size " + vmType.getDisk() + " GB."); } else if (bootSet.getMachine().getImageSizeBytes() > ((1024L * 1024L * 1024L * vmType.getDisk()))) { throw new ImageInstanceTypeVerificationException( "Unable to run instance " + bootSet.getMachine().getDisplayName() + " in which the size " + bootSet.getMachine().getImageSizeBytes() + " bytes of the instance is greater than the vmType " + vmType.getDisplayName() + " size " + vmType.getDisk() + " GB."); } } } catch (VerificationException e) { throw e; } catch (MetadataException ex) { LOG.error(ex); throw ex; } catch (RuntimeException ex) { LOG.error(ex); throw new VerificationException( "Failed to verify references for request: " + msg.toSimpleString() + " because of: " + ex.getMessage(), ex); } return true; }
public void setRootDirective() { if (!bootSet.isBlockStorage()) { try { final MachineImageInfo emi = LookupMachine.INSTANCE.apply(this.getRequest().getImageId()); rootDirective = emi.getRootDirective(); } catch (Exception ex) { } } }