@Override
 public Volume apply(Device input) {
   VolumeBuilder builder = new VolumeBuilder();
   builder.id(input.getId());
   DriveInfo drive = cache.get(input.getDriveUuid());
   if (drive != null) {
     builder.size(drive.getSize() / 1024 / 1024f);
   }
   return new VolumeBuilder().durable(true).type(Volume.Type.NAS).build();
 }
  @Override
  public NodeAndInitialCredentials<ServerInfo> createNodeWithGroupEncodedIntoName(
      String tag, String name, Template template) {
    long bootSize =
        (long) (template.getHardware().getVolumes().get(0).getSize() * 1024 * 1024 * 1024l);
    AffinityType affinityType = AffinityType.HDD;
    if (template.getOptions() instanceof CloudSigmaTemplateOptions) {
      CloudSigmaTemplateOptions options =
          CloudSigmaTemplateOptions.class.cast(template.getOptions());
      affinityType = options.getDiskDriveAffinity();
    }
    logger.debug(
        ">> imaging boot drive source(%s) bytes(%d) affinityType(%s)",
        template.getImage().getId(), bootSize, affinityType);
    DriveInfo drive =
        client.cloneDrive(
            template.getImage().getId(),
            template.getImage().getId(),
            new CloneDriveOptions().size(bootSize).affinity(affinityType));
    boolean success = driveNotClaimed.apply(drive);
    logger.debug("<< image(%s) complete(%s)", drive.getUuid(), success);
    if (!success) {
      client.destroyDrive(drive.getUuid());
      throw new IllegalStateException("could not image drive in time!");
    }

    Server toCreate =
        Servers.small(name, drive.getUuid(), defaultVncPassword)
            .mem(template.getHardware().getRam())
            .cpu((int) (template.getHardware().getProcessors().get(0).getSpeed()))
            .build();

    logger.debug(">> creating server");
    ServerInfo from = client.createServer(toCreate);
    logger.debug("<< created server(%s)", from.getUuid());
    logger.debug(">> starting server(%s)", from.getUuid());
    client.startServer(from.getUuid());
    return new NodeAndInitialCredentials<ServerInfo>(
        from,
        from.getUuid(),
        LoginCredentials.builder().password(defaultVncPassword).authenticateSudo(true).build());
  }
예제 #3
0
 public static Builder fromDriveInfo(DriveInfo in) {
   return new Builder()
       .uuid(in.getUuid())
       .name(in.getName())
       .size(in.getSize())
       .claimType(in.getClaimType())
       .readers(in.getReaders())
       .use(in.getUse())
       .status(in.getStatus())
       .user(in.getUser())
       .claimed(in.getClaimed())
       .encryptionCipher(in.getEncryptionCipher())
       .imaging(in.getImaging())
       .metrics(in.getMetrics())
       .autoexpanding(in.getAutoexpanding())
       .bits(in.getBits())
       .description(in.getDescription())
       .encryptionKey(in.getEncryptionKey())
       .free(in.getFree())
       .installNotes(in.getInstallNotes())
       .type(in.getType())
       .url(in.getUrl());
 }
 @Override
 public boolean apply(DriveInfo drive) {
   return drive.getType().equals(DriveType.DISK)
       && drive.getDriveType().contains("preinstalled");
 }