Beispiel #1
0
  @Transactional(propagation = Propagation.REQUIRED)
  public Datacenter modifyDatacenter(final Integer datacenterId, final DatacenterDto dto) {
    Datacenter old = getDatacenter(datacenterId);

    if (repo.existsAnyOtherWithName(old, dto.getName())) {
      addConflictErrors(APIError.DATACENTER_DUPLICATED_NAME);
      flushErrors();
    }

    old.setName(dto.getName());
    old.setLocation(dto.getLocation());

    isValidDatacenter(old);

    repo.update(old);
    return old;
  }
Beispiel #2
0
  @Transactional(propagation = Propagation.REQUIRED)
  public DatacenterDto addDatacenter(final DatacenterDto dto) throws Exception {
    if (repo.existsAnyDatacenterWithName(dto.getName())) {
      addConflictErrors(APIError.DATACENTER_DUPLICATED_NAME);
      flushErrors();
    }

    // Create the public network before the datacenter
    // This network will store all the public VLANs of the datacenter.
    Network network = new Network(UUID.randomUUID().toString());
    repo.insertNetwork(network);

    Datacenter datacenter = new Datacenter(dto.getName(), dto.getLocation());
    isValidDatacenter(datacenter);
    datacenter.setNetwork(network);
    repo.insert(datacenter);

    DatacenterDto responseDto =
        ModelTransformer.transportFromPersistence(DatacenterDto.class, datacenter);

    // Add the default tiers
    for (int i = 1; i <= 4; i++) {
      Tier tier = new Tier("Default Tier " + i, "Description of the default tier " + i, datacenter);
      repo.insertTier(tier);
    }

    // Add the Remote Services in database in case are informed in the request
    if (dto.getRemoteServices() != null) {
      RemoteServicesDto responseRemoteService = new RemoteServicesDto();
      for (RemoteServiceDto rsd : dto.getRemoteServices().getCollection()) {
        RemoteServiceDto rsDto = infrastructureService.addRemoteService(rsd, datacenter.getId());
        responseRemoteService.add(rsDto);
      }
      responseDto.setRemoteServices(responseRemoteService);
    }

    return responseDto;
  }