package com.sequenceiq.periscope.rest.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.sequenceiq.periscope.api.endpoint.PolicyEndpoint; import com.sequenceiq.periscope.api.model.ScalingPolicyJson; import com.sequenceiq.periscope.domain.ScalingPolicy; import com.sequenceiq.periscope.rest.converter.ScalingPolicyConverter; import com.sequenceiq.periscope.service.ScalingService; @RestController @RequestMapping("/clusters/{clusterId}/policies") public class PolicyController implements PolicyEndpoint { @Autowired private ScalingService scalingService; @Autowired private ScalingPolicyConverter policyConverter; @Override public ScalingPolicyJson addScaling(Long clusterId, ScalingPolicyJson json) { ScalingPolicy scalingPolicy = policyConverter.convert(json); return createScalingPolicyJsonResponse(scalingService.createPolicy(clusterId, json.getAlertId(), scalingPolicy), HttpStatus.CREATED); } @Override public ScalingPolicyJson setScaling(Long clusterId, Long policyId, ScalingPolicyJson scalingPolicy) { ScalingPolicy policy = policyConverter.convert(scalingPolicy); return createScalingPolicyJsonResponse(scalingService.updatePolicy(clusterId, policyId, policy), HttpStatus.OK); } @Override public List<ScalingPolicyJson> getScaling(Long clusterId) { return createScalingPoliciesJsonResponse(scalingService.getPolicies(clusterId), HttpStatus.OK); } @Override public void deletePolicy(Long clusterId, Long policyId) { scalingService.deletePolicy(clusterId, policyId); } private List<ScalingPolicyJson> createScalingPoliciesJsonResponse(List<ScalingPolicy> scalingPolicies, HttpStatus status) { return policyConverter.convertAllToJson(scalingPolicies); } private ScalingPolicyJson createScalingPolicyJsonResponse(ScalingPolicy scalingPolicy, HttpStatus status) { return policyConverter.convert(scalingPolicy); } }