Пример #1
0
    @Override
    public boolean apply(Allocation allocInfo) throws MetadataException, AuthException {
      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()) {
        } else if (Platform.windows.equals(bootSet.getMachine().getPlatform())
            && bootSet.getMachine().getImageSizeBytes()
                > ((1024L * 1024L * 1024L * vmType.getDisk()) + (1024L * 1024L * 10))) {
          throw new VerificationException(
              "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 VerificationException(
              "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 (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;
    }