Skip to content
Snippets Groups Projects
Commit 4c161415 authored by Patryk Kazimierowski's avatar Patryk Kazimierowski
Browse files

added event

parent 3a3ff9c0
No related branches found
No related tags found
1 merge request!212Resolve "Add application instance scaling support" -add api
package net.geant.nmaas.orchestration;
public enum ScaleDirection {
UP, DOWN
}
package net.geant.nmaas.orchestration.events.app;
import net.geant.nmaas.orchestration.ScaleDirection;
import org.springframework.context.ApplicationEvent;
import net.geant.nmaas.orchestration.Identifier;
public class AppScaleActionEvent extends ApplicationEvent {
private final Identifier deploymentId;
private final ScaleDirection direction;
public AppScaleActionEvent(Object source, Identifier deploymentId, ScaleDirection direction) {
super(source);
this.deploymentId = deploymentId;
this.direction = direction;
}
public Identifier getDeploymentId() {
return deploymentId;
}
public ScaleDirection getDirection() {
return direction;
}
}
package net.geant.nmaas.orchestration.tasks.app;
import lombok.RequiredArgsConstructor;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KServiceLifecycleManager;
import net.geant.nmaas.orchestration.AppDeploymentRepositoryManager;
import net.geant.nmaas.orchestration.entities.AppDeployment;
import net.geant.nmaas.orchestration.entities.AppDeploymentState;
import net.geant.nmaas.orchestration.events.app.AppScaleActionEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class AppScaleTask {
private final KServiceLifecycleManager kServiceLifecycleManager;
private final AppDeploymentRepositoryManager appDeploymentRepositoryManager;
@EventListener
public void handleScaleEvent(AppScaleActionEvent event) {
AppDeployment appDeployment = appDeploymentRepositoryManager.load(event.getDeploymentId());
switch (event.getDirection()) {
case DOWN:
appDeployment.setState(AppDeploymentState.SCALED_DOWN);
appDeploymentRepositoryManager.update(appDeployment);
kServiceLifecycleManager.scaleDeployment(event.getDeploymentId(), 0);
break;
case UP:
appDeployment.setState(AppDeploymentState.APPLICATION_CONFIGURED);
appDeploymentRepositoryManager.update(appDeployment);
kServiceLifecycleManager.scaleDeployment(event.getDeploymentId(), 1);
break;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment