diff --git a/src/main/java/net/geant/nmaas/portal/api/domain/DomainAnnotationView.java b/src/main/java/net/geant/nmaas/portal/api/domain/DomainAnnotationView.java new file mode 100644 index 0000000000000000000000000000000000000000..5912321d84a947f866d64e1ed76243ea027fea5d --- /dev/null +++ b/src/main/java/net/geant/nmaas/portal/api/domain/DomainAnnotationView.java @@ -0,0 +1,17 @@ +package net.geant.nmaas.portal.api.domain; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class DomainAnnotationView { + + private Long id; + private String key; + private String value; +} \ No newline at end of file diff --git a/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java b/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java index c0df74ba7870fcd10cd8481325b3a484ed350aa4..382d56837ed860706f18722698073f05f0d90018 100644 --- a/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java +++ b/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java @@ -8,6 +8,7 @@ import net.geant.nmaas.dcn.deployment.entities.DcnDeploymentState; import net.geant.nmaas.orchestration.events.dcn.DcnDeployedEvent; import net.geant.nmaas.orchestration.events.dcn.DcnRemoveActionEvent; import net.geant.nmaas.orchestration.exceptions.InvalidDomainException; +import net.geant.nmaas.portal.api.domain.DomainAnnotationView; import net.geant.nmaas.portal.api.domain.DomainBase; import net.geant.nmaas.portal.api.domain.DomainBaseWithState; import net.geant.nmaas.portal.api.domain.DomainGroupView; @@ -245,7 +246,7 @@ public class DomainController extends AppBaseController { @DeleteMapping("/group/{domainGroupId}") @Transactional - @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')") + @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN') || hasRole('ROLE_VL_MANAGER')") public void deleteDomainGroup(@PathVariable Long domainGroupId) { this.domainGroupService.deleteDomainGroup(domainGroupId); } @@ -287,7 +288,7 @@ public class DomainController extends AppBaseController { @PatchMapping("/group/{domainGroupId}") @Transactional - @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')") + @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN') || hasRole('ROLE_VL_MANAGER')") public DomainGroupView deleteDomainFromGroup(@PathVariable Long domainGroupId, @RequestBody Long domainId) { return domainGroupService.deleteDomainFromGroup( domainService.findDomain(domainId).orElseThrow(() -> new IllegalArgumentException(String.format("Domain with id %s doesn't exist", domainId))), @@ -333,7 +334,7 @@ public class DomainController extends AppBaseController { @PutMapping("/annotations/{id}") @Transactional @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')") - public void updateAnnotation(@PathVariable Long id, @RequestBody DomainAnnotation annotation) { + public void updateAnnotation(@PathVariable Long id, @RequestBody DomainAnnotationView annotation) { this.domainService.updateAnnotation(id, annotation); } diff --git a/src/main/java/net/geant/nmaas/portal/service/DomainService.java b/src/main/java/net/geant/nmaas/portal/service/DomainService.java index 817d23ef9d74e96aaf31d31b64bb8e14cc1e4cfd..20f77b1aabc3615139594701f8e5b4a171f8c7f5 100644 --- a/src/main/java/net/geant/nmaas/portal/service/DomainService.java +++ b/src/main/java/net/geant/nmaas/portal/service/DomainService.java @@ -2,6 +2,7 @@ package net.geant.nmaas.portal.service; import net.geant.nmaas.dcn.deployment.DcnDeploymentType; import net.geant.nmaas.dcn.deployment.entities.DcnInfo; +import net.geant.nmaas.portal.api.domain.DomainAnnotationView; import net.geant.nmaas.portal.api.domain.DomainGroupView; import net.geant.nmaas.portal.api.domain.DomainRequest; import net.geant.nmaas.portal.api.domain.KeyValueView; @@ -72,5 +73,5 @@ public interface DomainService { boolean checkIfAnnotationExist(String key); void deleteAnnotation(Long id); List<DomainAnnotation> getAnnotations(); - void updateAnnotation(Long id,DomainAnnotation domainAnnotation); + void updateAnnotation(Long id,DomainAnnotationView domainAnnotation); } \ No newline at end of file diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java index e8ad91d3b1e00e18cda868abf2aeb97f8595904e..1bfa4f3532b411f3594e5224616a4a6383dc9f07 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java @@ -7,6 +7,7 @@ import net.geant.nmaas.dcn.deployment.entities.DcnInfo; import net.geant.nmaas.dcn.deployment.entities.DcnSpec; import net.geant.nmaas.dcn.deployment.repositories.DomainDcnDetailsRepository; import net.geant.nmaas.orchestration.repositories.DomainTechDetailsRepository; +import net.geant.nmaas.portal.api.domain.DomainAnnotationView; import net.geant.nmaas.portal.api.domain.DomainGroupView; import net.geant.nmaas.portal.api.domain.DomainRequest; import net.geant.nmaas.portal.api.domain.KeyValueView; @@ -520,13 +521,13 @@ public class DomainServiceImpl implements DomainService { } @Override - public void updateAnnotation(Long id, DomainAnnotation annotation) { + public void updateAnnotation(Long id, DomainAnnotationView annotation) { Optional<DomainAnnotation> domainFromDb = this.domainAnnotationsRepository.findById(id); if (domainFromDb.isPresent() && id.equals(annotation.getId())) { DomainAnnotation domainAnnotation = domainFromDb.get(); domainAnnotation.setKey(annotation.getKey()); domainAnnotation.setValue(annotation.getValue()); - this.domainAnnotationsRepository.save(annotation); + this.domainAnnotationsRepository.save(domainAnnotation); } }