docs: public de.uniulm.omi.cloudiator.flexiant.client.domain.Server createServer(
          final ServerTemplate serverTemplate) throws FlexiantException {
  
          checkNotNull(serverTemplate);
  
          io.github.cloudiator.flexiant.extility.Server server =
              new io.github.cloudiator.flexiant.extility.Server();
          server.setResourceName(serverTemplate.getServerName());
          server.setCustomerUUID(this.getCustomerUUID());
          server.setProductOfferUUID(serverTemplate.getServerProductOffer());
          server.setVdcUUID(serverTemplate.getVdc());
          server.setImageUUID(serverTemplate.getImage());
  
          Disk disk = new Disk();
          disk.setProductOfferUUID(serverTemplate.getDiskProductOffer());
          disk.setIndex(0);
          server.getDisks().add(disk);
  
          final Set<String> networks = new HashSet<String>();
          if (serverTemplate.getTemplateOptions().getNetworks().isEmpty()) {
              //no network configured, find it out by ourselves.
              if (this.getNetworks(serverTemplate.getVdc()).size() == 1) {
                  networks.add(this.getNetworks(serverTemplate.getVdc()).iterator().next().getId());
              } else {
                  throw new FlexiantException("Could not uniquely identify network.");
              }
          } else {
              networks.addAll(serverTemplate.getTemplateOptions().getNetworks());
          }
  
          //assign the networks
          for (String network : networks) {
              Nic nic = new Nic();
              nic.setNetworkUUID(network);
              server.getNics().add(nic);
          }
  
          try {
              Job serverJob = this.getService().createServer(server, null, null, null);
              this.waitForJob(serverJob);
              final de.uniulm.omi.cloudiator.flexiant.client.domain.Server createdServer =
                  this.getServer(serverJob.getItemUUID());
              checkState(createdServer != null, String.format(
                  "Execution of job %s for server %s was returned as successful, but the server could not be queried.",
                  serverJob.getResourceUUID(), serverJob.getItemUUID()));
              this.startServer(createdServer);
              return createdServer;
          } catch (ExtilityException e) {
              throw new FlexiantException("Could not create server", e);
          }
      }