package org.alien4cloud.tosca.editor.processors.groups;
import alien4cloud.exception.NotFoundException;
import org.alien4cloud.tosca.editor.EditionContextManager;
import org.alien4cloud.tosca.editor.operations.groups.RemoveGroupMemberOperation;
import org.alien4cloud.tosca.editor.processors.nodetemplate.AbstractNodeProcessor;
import org.springframework.stereotype.Component;
import org.alien4cloud.tosca.model.templates.NodeGroup;
import org.alien4cloud.tosca.model.templates.NodeTemplate;
import org.alien4cloud.tosca.model.templates.Topology;
/**
* Remove a node from a group.
*/
@Component
public class RemoveGroupMemberProcessor extends AbstractNodeProcessor<RemoveGroupMemberOperation> {
@Override
protected void processNodeOperation(RemoveGroupMemberOperation operation, NodeTemplate nodeTemplate) {
Topology topology = EditionContextManager.getTopology();
NodeGroup nodeGroup = topology.getGroups().get(operation.getGroupName());
if (nodeGroup != null && nodeGroup.getMembers() != null) {
boolean removed = nodeGroup.getMembers().remove(operation.getNodeName());
if (!removed) {
throw new NotFoundException("Node <" + operation.getNodeName() + "> is not part of group <" + operation.getGroupName() + ">.");
}
}
if (nodeTemplate != null && nodeTemplate.getGroups() != null) {
nodeTemplate.getGroups().remove(operation.getGroupName());
}
}
}