diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java index 0e1299837301b3008a46f2eadc01e1320d339a2a..735f43a87ef0fc8349ca0b2bf282487673ff621a 100644 --- a/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java +++ b/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java @@ -5,50 +5,26 @@ import jakarta.validation.constraints.NotNull; import lombok.extern.slf4j.Slf4j; import net.geant.nmaas.nmservice.configuration.gitlab.events.AddUserToRepositoryGitlabEvent; import net.geant.nmaas.nmservice.configuration.gitlab.events.RemoveUserFromRepositoryGitlabEvent; -import net.geant.nmaas.orchestration.AppDeploymentMonitor; -import net.geant.nmaas.orchestration.AppDeploymentRepositoryManager; -import net.geant.nmaas.orchestration.AppLifecycleManager; -import net.geant.nmaas.orchestration.AppLifecycleState; -import net.geant.nmaas.orchestration.Identifier; +import net.geant.nmaas.orchestration.*; import net.geant.nmaas.orchestration.api.model.AppDeploymentHistoryView; import net.geant.nmaas.orchestration.entities.AppDeployment; +import net.geant.nmaas.orchestration.events.app.AppScaleActionEvent; import net.geant.nmaas.orchestration.exceptions.InvalidAppStateException; import net.geant.nmaas.orchestration.exceptions.InvalidDeploymentIdException; import net.geant.nmaas.orchestration.exceptions.InvalidDomainException; -import net.geant.nmaas.portal.api.domain.AppInstanceBase; -import net.geant.nmaas.portal.api.domain.AppInstanceRequest; -import net.geant.nmaas.portal.api.domain.AppInstanceState; -import net.geant.nmaas.portal.api.domain.AppInstanceStatus; -import net.geant.nmaas.portal.api.domain.AppInstanceView; -import net.geant.nmaas.portal.api.domain.AppInstanceViewExtended; -import net.geant.nmaas.portal.api.domain.ApplicationBaseView; -import net.geant.nmaas.portal.api.domain.ConfigWizardTemplateView; -import net.geant.nmaas.portal.api.domain.Id; -import net.geant.nmaas.portal.api.domain.UserBase; +import net.geant.nmaas.portal.api.domain.*; import net.geant.nmaas.portal.api.exception.MissingElementException; import net.geant.nmaas.portal.api.exception.ProcessingException; import net.geant.nmaas.portal.exceptions.ApplicationSubscriptionNotActiveException; -import net.geant.nmaas.portal.persistent.entity.AppInstance; -import net.geant.nmaas.portal.persistent.entity.Application; -import net.geant.nmaas.portal.persistent.entity.ApplicationBase; -import net.geant.nmaas.portal.persistent.entity.Domain; -import net.geant.nmaas.portal.persistent.entity.Role; -import net.geant.nmaas.portal.persistent.entity.SSHKeyEntity; -import net.geant.nmaas.portal.persistent.entity.User; -import net.geant.nmaas.portal.persistent.entity.UserRole; -import net.geant.nmaas.portal.service.ApplicationBaseService; -import net.geant.nmaas.portal.service.ApplicationInstanceService; -import net.geant.nmaas.portal.service.ApplicationService; -import net.geant.nmaas.portal.service.ConfigurationManager; -import net.geant.nmaas.portal.service.DomainService; -import net.geant.nmaas.portal.service.UserService; +import net.geant.nmaas.portal.persistent.entity.*; +import net.geant.nmaas.portal.service.*; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.http.ResponseEntity; +import org.springframework.http.HttpStatus; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.transaction.annotation.Transactional; @@ -56,11 +32,7 @@ import org.springframework.web.bind.annotation.*; import java.lang.reflect.Field; import java.security.Principal; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @RestController @@ -248,7 +220,7 @@ public class AppInstanceController extends AppBaseController { public Id createAppInstance(@RequestBody AppInstanceRequest appInstanceRequest, @NotNull Principal principal, @PathVariable Long domainId, - @RequestParam(name = "clusterId",required = false) Long clusterId) { + @RequestParam(name = "clusterId", required = false) Long clusterId) { log.error("Cluster = {}", clusterId); Application app = getApp(appInstanceRequest.getApplicationId()); Domain domain = domainService.findDomain(domainId) @@ -757,22 +729,34 @@ public class AppInstanceController extends AppBaseController { } return pageable; } + /** * @param deploymentId unique identifier of the deployed user application */ @PutMapping("/{deploymentId}/scale-down") - public ResponseEntity<Void> scaleDownApp(@PathVariable String deploymentId) { - appLifecycleManager.scaleDown(new Identifier(deploymentId)); - return ResponseEntity.ok().build(); + @ResponseStatus(HttpStatus.NO_CONTENT) + public void scaleDownApp(@PathVariable String deploymentId) { + eventPublisher.publishEvent( + new AppScaleActionEvent( + this, + new Identifier(deploymentId), + ScaleDirection.DOWN) + ); } /** * @param deploymentId unique identifier of the deployed user application */ @PutMapping("/{deploymentId}/scale-up") - public ResponseEntity<Void> scaleUpApp(@PathVariable String deploymentId) { - appLifecycleManager.scaleUp(new Identifier(deploymentId)); - return ResponseEntity.ok().build(); + @ResponseStatus(HttpStatus.NO_CONTENT) + public void scaleUpApp(@PathVariable String deploymentId) { + + eventPublisher.publishEvent( + new AppScaleActionEvent( + this, + new Identifier(deploymentId), + ScaleDirection.UP) + ); } }