@RequestMapping(value = "/{deploymentName:.+}/deploy/", method = RequestMethod.POST) DaemonTask<Halconfig, RemoteAction> deploy(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings, @RequestParam(required = false) List<DeployOption> deployOptions, @RequestParam(required = false) List<String> serviceNames, @RequestParam(required = false) List<String> excludeServiceNames) { List<DeployOption> finalDeployOptions = deployOptions != null ? deployOptions : Collections.emptyList(); List<String> finalServiceNames = serviceNames != null ? serviceNames : Collections.emptyList(); List<String> finalExcludeServiceNames = excludeServiceNames != null ? excludeServiceNames : Collections.emptyList(); StaticRequestBuilder<RemoteAction> builder = new StaticRequestBuilder<>( () -> deployService.deploy(deploymentName, finalDeployOptions, finalServiceNames, finalExcludeServiceNames)); builder.setSeverity(validationSettings.getSeverity()); if (validationSettings.isValidate()) { builder.setValidateResponse(() -> deploymentService.validateDeployment(deploymentName)); } return DaemonTaskHandler .submitTask(builder::build, "Apply deployment", TimeUnit.MINUTES.toMillis(30)); }
@RequestMapping(value = "/{deploymentName:.+}/details/{serviceName:.+}/", method = RequestMethod.GET) DaemonTask<Halconfig, RunningServiceDetails> getServiceDetails(@PathVariable String deploymentName, @PathVariable String serviceName, @ModelAttribute ValidationSettings validationSettings) { return GenericGetRequest.<RunningServiceDetails>builder() .getter(() -> null) .validator(() -> deploymentService.validateDeployment(deploymentName)) .description("Get running service details") .build() .execute(validationSettings); } }
@RequestMapping(value = "/{deploymentName:.+}/generate/", method = RequestMethod.POST) DaemonTask<Halconfig, String> generateConfig(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings, @RequestParam(required = false) List<String> serviceNames) { List<String> finalServiceNames = serviceNames != null ? serviceNames : Collections.emptyList(); Supplier<String> buildResponse = () -> { GenerateService.ResolvedConfiguration configuration = generateService.generateConfigWithOptionalServices(deploymentName, finalServiceNames.stream() .map(SpinnakerService.Type::fromCanonicalName) .collect(Collectors.toList())); return configuration.getStagingDirectory(); }; StaticRequestBuilder<String> builder = new StaticRequestBuilder<>(buildResponse); builder.setSeverity(validationSettings.getSeverity()); if (validationSettings.isValidate()) { builder.setValidateResponse(() -> deploymentService.validateDeployment(deploymentName)); } return DaemonTaskHandler.submitTask(builder::build, "Generate config"); }
@RequestMapping(value = "/{deploymentName:.+}/prep/", method = RequestMethod.POST) DaemonTask<Halconfig, RemoteAction> prep(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings, @RequestParam(required = false) List<String> serviceNames, @RequestParam(required = false) List<String> excludeServiceNames) { List<String> finalServiceNames = serviceNames != null ? serviceNames : Collections.emptyList(); List<String> finalExcludeServiceNames = excludeServiceNames != null ? excludeServiceNames : Collections.emptyList(); StaticRequestBuilder<RemoteAction> builder = new StaticRequestBuilder<>( () -> deployService.prep(deploymentName, finalServiceNames, finalExcludeServiceNames)); builder.setSeverity(validationSettings.getSeverity()); if (validationSettings.isValidate()) { builder.setValidateResponse(() -> deploymentService.validateDeployment(deploymentName)); } return DaemonTaskHandler .submitTask(builder::build, "Prep deployment", TimeUnit.MINUTES.toMillis(5)); }
@RequestMapping(value = "/{deploymentName:.+}", method = RequestMethod.GET) DaemonTask<Halconfig, DeploymentConfiguration> deploymentConfiguration(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings) { return GenericGetRequest.<DeploymentConfiguration>builder() .getter(() -> deploymentService.getDeploymentConfiguration(deploymentName)) .validator(() -> deploymentService.validateDeployment(deploymentName)) .description("Get deployment configuration") .build() .execute(validationSettings); }
public void deployConfig(com.netflix.spinnaker.halyard.proto.DeployConfigRequest request, io.grpc.stub.StreamObserver<com.google.longrunning.Operation> responseObserver) { StaticRequestBuilder<RemoteAction> builder = new StaticRequestBuilder<>( () -> deployService.deploy(request.getName(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList())); builder.setValidateResponse(() -> deploymentService.validateDeployment(request.getName())); builder.setSeverity(Severity.WARNING); builder.setSetup(() -> halconfigParser.setInmemoryHalConfig(new ByteArrayInputStream(request.getConfig().toByteArray())) ); responseObserver.onNext(DaemonTaskHandler .submitTask(builder::build, "Apply deployment", TimeUnit.MINUTES.toMillis(30)).getLRO()); responseObserver.onCompleted(); }
@RequestMapping(value = "/{deploymentName:.+}/configDiff/", method = RequestMethod.GET) DaemonTask<Halconfig, NodeDiff> configDiff(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings) { return GenericGetRequest.<NodeDiff>builder() .getter(() -> deployService.configDiff(deploymentName)) .validator(() -> deploymentService.validateDeployment(deploymentName)) .description("Determine config diff") .build() .execute(validationSettings); }
@RequestMapping(value = "/{deploymentName:.+}", method = RequestMethod.PUT) DaemonTask<Halconfig, Void> deploymentConfiguration(@PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings, @RequestBody DeploymentConfiguration deploymentConfiguration) { return GenericUpdateRequest.<DeploymentConfiguration>builder(halconfigParser) .stagePath(halconfigDirectoryStructure.getStagingPath(deploymentName)) .updater(d -> deploymentService.setDeploymentConfiguration(deploymentName, d)) .validator(() -> deploymentService.validateDeployment(deploymentName)) .description("Edit deployment configuration") .build() .execute(validationSettings, deploymentConfiguration); }