@RequestMapping(value = "/defaults/baseImage/", method = RequestMethod.POST) DaemonTask<Halconfig, Void> addBaseImage(@PathVariable String deploymentName, @PathVariable String providerName, @ModelAttribute ValidationSettings validationSettings, @RequestBody Object rawBaseImage) { BaseImage baseImage = objectMapper.convertValue( rawBaseImage, Providers.translateBaseImageType(providerName) ); // TODO(lwander): Would be good to indicate when an added base image id conflicts with an existing base image id. return GenericUpdateRequest.<BaseImage>builder(halconfigParser) .stagePath(halconfigDirectoryStructure.getStagingPath(deploymentName)) .updater(b -> bakeryService.addBaseImage(deploymentName, providerName, b)) .validator(() -> bakeryService.validateBaseImage(deploymentName, providerName, baseImage.getBaseImage().getId())) .description("Add " + baseImage.getNodeName() + " base image") .build() .execute(validationSettings, baseImage); } }
imageSettings.setId(isSet(id) ? id : imageSettings.getId()); imageSettings.setShortDescription(isSet(shortDescription) ? shortDescription : imageSettings.getShortDescription()); imageSettings.setDetailedDescription(isSet(detailedDescription) ? detailedDescription : imageSettings.getDetailedDescription()); imageSettings.setPackageType(isSet(packageType) ? packageType : imageSettings.getPackageType()); imageSettings.setTemplateFile(isSet(templateFile) ? templateFile : imageSettings.getTemplateFile());
imageSettings.setId(isSet(id) ? id : imageSettings.getId()); imageSettings.setShortDescription(isSet(shortDescription) ? shortDescription : imageSettings.getShortDescription()); imageSettings.setDetailedDescription(isSet(detailedDescription) ? detailedDescription : imageSettings.getDetailedDescription()); imageSettings.setPackageType(isSet(packageType) ? packageType : imageSettings.getPackageType()); imageSettings.setTemplateFile(isSet(templateFile) ? templateFile : imageSettings.getTemplateFile());
@Override protected void executeThis() { String baseImageId = getBaseImageId(); BaseImage baseImage = buildBaseImage(baseImageId); BaseImage.ImageSettings imageSettings = baseImage.getBaseImage(); if (imageSettings == null) { throw new RuntimeException("Provider " + getProviderName() + " must provide image settings when building a base image. This is a bug with this provider's implementation of halyard."); } imageSettings.setId(getBaseImageId()); imageSettings.setShortDescription(shortDescription); imageSettings.setDetailedDescription(detailedDescription); imageSettings.setPackageType(packageType); imageSettings.setTemplateFile(templateFile); String providerName = getProviderName(); String currentDeployment = getCurrentDeployment(); new OperationHandler<Void>() .setSuccessMessage("Successfully added base image " + baseImageId + " to " + providerName + "'s bakery.") .setFailureMesssage("Failed to add base image " + baseImageId + " to " + providerName + "'s bakery.") .setOperation(Daemon.addBaseImage(currentDeployment, providerName, !noValidate, baseImage)) .get(); } }
@Override protected void executeThis() { String baseImageId = getBaseImageId(); BaseImage baseImage = buildBaseImage(baseImageId); BaseImage.ImageSettings imageSettings = baseImage.getBaseImage(); if (imageSettings == null) { throw new RuntimeException("Provider " + getProviderName() + " must provide image settings when building a base image. This is a bug with this provider's implementation of halyard."); } imageSettings.setId(getBaseImageId()); imageSettings.setShortDescription(shortDescription); imageSettings.setDetailedDescription(detailedDescription); imageSettings.setPackageType(packageType); imageSettings.setTemplateFile(templateFile); String providerName = getProviderName(); String currentDeployment = getCurrentDeployment(); new OperationHandler<Void>() .setSuccessMessage("Successfully added base image " + baseImageId + " to " + providerName + "'s bakery.") .setFailureMesssage("Failed to add base image " + baseImageId + " to " + providerName + "'s bakery.") .setOperation(Daemon.addBaseImage(currentDeployment, providerName, !noValidate, baseImage)) .get(); } }
@RequestMapping(value = "/defaults/baseImage/{baseImageId:.+}", method = RequestMethod.PUT) DaemonTask<Halconfig, Void> setBaseImage(@PathVariable String deploymentName, @PathVariable String providerName, @PathVariable String baseImageId, @ModelAttribute ValidationSettings validationSettings, @RequestBody Object rawBaseImage) { BaseImage baseImage = objectMapper.convertValue( rawBaseImage, Providers.translateBaseImageType(providerName) ); return GenericUpdateRequest.<BaseImage>builder(halconfigParser) .stagePath(halconfigDirectoryStructure.getStagingPath(deploymentName)) .updater(b -> bakeryService.setBaseImage(deploymentName, providerName, baseImageId, b)) .validator(() -> bakeryService.validateBaseImage(deploymentName, providerName, baseImage.getBaseImage().getId())) .description("Edit " + baseImageId + " base image") .build() .execute(validationSettings, baseImage); }
@Override protected void executeThis() { String providerName = getProviderName(); String currentDeployment = getCurrentDeployment(); BakeryDefaults bakeryDefaults = new OperationHandler<BakeryDefaults>() .setFailureMesssage("Failed to get bakery defaults for " + providerName + "'s bakery.") .setOperation(Daemon.getBakeryDefaults(currentDeployment, providerName, !noValidate)) .get(); List<BaseImage> baseImages = bakeryDefaults.getBaseImages(); if (baseImages.isEmpty()) { AnsiUi.success("No configured base images for " + getProviderName() + "."); } else { AnsiUi.success("Base images for " + getProviderName() + ":"); baseImages.forEach(baseImage -> AnsiUi.listItem(baseImage.getBaseImage().getId())); } } }
@Override protected void executeThis() { String providerName = getProviderName(); String currentDeployment = getCurrentDeployment(); BakeryDefaults bakeryDefaults = new OperationHandler<BakeryDefaults>() .setFailureMesssage("Failed to get bakery defaults for " + providerName + "'s bakery.") .setOperation(Daemon.getBakeryDefaults(currentDeployment, providerName, !noValidate)) .get(); List<BaseImage> baseImages = bakeryDefaults.getBaseImages(); if (baseImages.isEmpty()) { AnsiUi.success("No configured base images for " + getProviderName() + "."); } else { AnsiUi.success("Base images for " + getProviderName() + ":"); baseImages.forEach(baseImage -> AnsiUi.listItem(baseImage.getBaseImage().getId())); } } }
public String getNodeName() { return getBaseImage().getId(); }
public String getNodeName() { return getBaseImage().getId(); }
public void addDefaultImages(List<T> otherBaseImages) { Set<String> existingIds = baseImages.stream().map(i -> i.getBaseImage().getId()).collect(Collectors.toSet()); List<T> dedupedOtherBaseImages = otherBaseImages.stream() .filter(i -> !existingIds.contains(i.getBaseImage().getId())) .collect(Collectors.toList()); baseImages.addAll(dedupedOtherBaseImages); } }
public void deleteBaseImage(String deploymentName, String bakeryDefaultsName, String baseImageId) { BakeryDefaults bakeryDefaults = getBakeryDefaults(deploymentName, bakeryDefaultsName); boolean removed = bakeryDefaults.getBaseImages().removeIf(baseImage -> ((BaseImage) baseImage).getBaseImage().getId().equals(baseImageId)); if (!removed) { throw new HalException( new ConfigProblemBuilder(Severity.FATAL, "BaseImage \"" + baseImageId + "\" wasn't found") .build()); } }
public void deleteBaseImage(String deploymentName, String bakeryDefaultsName, String baseImageId) { BakeryDefaults bakeryDefaults = getBakeryDefaults(deploymentName, bakeryDefaultsName); boolean removed = bakeryDefaults.getBaseImages().removeIf(baseImage -> ((BaseImage) baseImage).getBaseImage().getId().equals(baseImageId)); if (!removed) { throw new HalException( new ConfigProblemBuilder(Severity.FATAL, "BaseImage \"" + baseImageId + "\" wasn't found") .build()); } }
public void addDefaultImages(List<T> otherBaseImages) { Set<String> existingIds = baseImages.stream().map(i -> i.getBaseImage().getId()).collect(Collectors.toSet()); List<T> dedupedOtherBaseImages = otherBaseImages.stream() .filter(i -> !existingIds.contains(i.getBaseImage().getId())) .collect(Collectors.toList()); baseImages.addAll(dedupedOtherBaseImages); } }