From 1032fd22f639ac6a629a24bad727a76c94ce3eec Mon Sep 17 00:00:00 2001 From: Emily Burns Date: Thu, 16 Nov 2017 13:44:07 -0800 Subject: [PATCH] fix(intent, pipeline_template): controllers conditional on storage backend (#290) --- .../front50/controllers/IntentController.java | 2 ++ .../PipelineTemplateController.java | 29 ++++++++----------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/IntentController.java b/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/IntentController.java index 579b19ee8..666813fbd 100644 --- a/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/IntentController.java +++ b/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/IntentController.java @@ -23,11 +23,13 @@ import com.netflix.spinnaker.front50.model.intent.Intent; import com.netflix.spinnaker.front50.model.intent.IntentDAO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController +@ConditionalOnBean(IntentDAO.class) @RequestMapping("intents") public class IntentController { diff --git a/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/PipelineTemplateController.java b/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/PipelineTemplateController.java index a2b365e90..dda5fb36f 100644 --- a/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/PipelineTemplateController.java +++ b/front50-web/src/main/groovy/com/netflix/spinnaker/front50/controllers/PipelineTemplateController.java @@ -27,6 +27,7 @@ import com.netflix.spinnaker.front50.model.pipeline.PipelineTemplateDAO; import com.netflix.spinnaker.front50.model.pipeline.TemplateConfiguration; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -41,11 +42,12 @@ import java.util.stream.Collectors; @RestController +@ConditionalOnBean(PipelineTemplateDAO.class) @RequestMapping("pipelineTemplates") public class PipelineTemplateController { - @Autowired(required = false) - PipelineTemplateDAO pipelineTemplateDAO = null; + @Autowired + PipelineTemplateDAO pipelineTemplateDAO; @Autowired PipelineDAO pipelineDAO; @@ -57,29 +59,29 @@ public class PipelineTemplateController { @RequestMapping(value = "", method = RequestMethod.GET) List list(@RequestParam(required = false, value = "scopes") List scopes) { - return (List) getPipelineTemplateDAO().getPipelineTemplatesByScope(scopes); + return (List) pipelineTemplateDAO.getPipelineTemplatesByScope(scopes); } @RequestMapping(value = "", method = RequestMethod.POST) void save(@RequestBody PipelineTemplate pipelineTemplate) { checkForDuplicatePipelineTemplate(pipelineTemplate.getId()); - getPipelineTemplateDAO().create(pipelineTemplate.getId(), pipelineTemplate); + pipelineTemplateDAO.create(pipelineTemplate.getId(), pipelineTemplate); } @RequestMapping(value = "{id}", method = RequestMethod.GET) PipelineTemplate get(@PathVariable String id) { - return getPipelineTemplateDAO().findById(id); + return pipelineTemplateDAO.findById(id); } @RequestMapping(value = "{id}", method = RequestMethod.PUT) PipelineTemplate update(@PathVariable String id, @RequestBody PipelineTemplate pipelineTemplate) { - PipelineTemplate existingPipelineTemplate = getPipelineTemplateDAO().findById(id); + PipelineTemplate existingPipelineTemplate = pipelineTemplateDAO.findById(id); if (!pipelineTemplate.getId().equals(existingPipelineTemplate.getId())) { throw new InvalidRequestException("The provided id " + id + " doesn't match the pipeline template id " + pipelineTemplate.getId()); } pipelineTemplate.setLastModified(System.currentTimeMillis()); - getPipelineTemplateDAO().update(id, pipelineTemplate); + pipelineTemplateDAO.update(id, pipelineTemplate); return pipelineTemplate; } @@ -88,7 +90,7 @@ PipelineTemplate update(@PathVariable String id, @RequestBody PipelineTemplate p void delete(@PathVariable String id) { checkForDependentConfigs(id, true); checkForDependentTemplates(id); - getPipelineTemplateDAO().delete(id); + pipelineTemplateDAO.delete(id); } @RequestMapping(value = "{id}/dependentPipelines", method = RequestMethod.GET) @@ -162,7 +164,7 @@ void checkForDependentConfigs(String templateId, boolean recursive) { List getDependentTemplates(String templateId, Optional> templates) { List dependentTemplateIds = new ArrayList<>(); - final Collection pipelineTemplates = templates.orElse(getPipelineTemplateDAO().all()); + final Collection pipelineTemplates = templates.orElse(pipelineTemplateDAO.all()); pipelineTemplates.forEach(template -> { if (template.getSource() != null && template.getSource().equalsIgnoreCase("spinnaker://" + templateId)) { @@ -184,17 +186,10 @@ void checkForDependentTemplates(String templateId) { private void checkForDuplicatePipelineTemplate(String id) { try { - getPipelineTemplateDAO().findById(id); + pipelineTemplateDAO.findById(id); } catch (NotFoundException e) { return; } throw new DuplicateEntityException("A pipeline template with the id " + id + " already exists"); } - - private PipelineTemplateDAO getPipelineTemplateDAO() { - if (pipelineTemplateDAO == null) { - throw new BadRequestException("Pipeline Templates are not supported with your current storage backend"); - } - return pipelineTemplateDAO; - } }