package org.alien4cloud.tosca.editor;
import javax.inject.Inject;
import io.swagger.annotations.Api;
import org.hibernate.validator.constraints.NotBlank;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.alien4cloud.tosca.model.types.NodeType;
import alien4cloud.rest.model.RestResponse;
import alien4cloud.rest.model.RestResponseBuilder;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* This controller provides helper operations to find possible replacement indexedNodeTypes for a node template.
*
* This is not intended to be a user API.
*/
@RestController
@RequestMapping({ "/rest/v2/editor/{topologyId}/nodetemplates/{nodeTemplateName}/replacementhelper", "/rest/latest/editor/{topologyId}/nodetemplates/{nodeTemplateName}/replacementhelper" })
@Api(value = "", description = "Node replacement helper")
public class EditorNodeReplacementController {
@Inject
private EditorNodeReplacementService editorService;
/**
* Get the possible replacement indexedNodeTypes for a node template.
*/
@ApiOperation(value = "Get the possible type candidates to replace this node.", notes = "Application role required [ APPLICATION_MANAGER | APPLICATION_DEVOPS ]")
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public RestResponse<NodeType[]> getReplacementForNode(
@ApiParam(value = "The topology id.", required = true) @NotBlank @PathVariable final String topologyId,
@ApiParam(value = "The node temlate id.", required = true) @NotBlank @PathVariable(value = "nodeTemplateName") final String nodeTemplateName) {
NodeType[] replacementsNodeTypes = editorService.getReplacementForNode(topologyId, nodeTemplateName);
return RestResponseBuilder.<NodeType[]> builder().data(replacementsNodeTypes).build();
}
}