private void moveTemplatesToTopLevel(KubernetesListBuilder builder, List<HasMetadata> objects) { Template template = extractAndRemoveTemplates(objects); if (template != null) { openshiftDependencyResources.addMissingParameters(template); builder.addToItems(template); } else { for (HasMetadata object : objects) { builder.addToItems(object); } } }
private static KubernetesList processLocally(final InputStream input, final Map<String, String> parameters) throws Exception { Objects.requireNonNull(parameters); final JsonNode tree = MAPPER.readTree(input); JsonNode objects = tree.get("objects"); if (objects == null || !objects.isArray()) { return new KubernetesList(); } final Map<String, String> finalParameters = makeParameters(parameters, tree.get("parameters")); KubernetesListBuilder result = new KubernetesListBuilder(); for (JsonNode node : objects) { TreeTraversingParser parser = new TreeTraversingParser((JsonNode) node, MAPPER) { @Override public String getText() { return replace(super.getText(), finalParameters); } }; HasMetadata item = MAPPER.readValue(parser, HasMetadata.class); result.addToItems(item); } return result.build(); }
public void filterAndAddItemsToBuilder(KubernetesListBuilder builder, List<HasMetadata> items) { Map<KindAndName, Integer> aIndexMap = new HashMap<>(); int nItems = 0; // Populate map with existing items in the builder for(int index = 0; index < builder.getItems().size(); index++, nItems++) { HasMetadata aItem = builder.getItems().get(index); KindAndName aKey = new KindAndName(aItem); aIndexMap.put(aKey, index); } for(HasMetadata item : items) { KindAndName aKey = new KindAndName(item); if(aIndexMap.containsKey(aKey)) { // Merge the override fragments, and remove duplicate HasMetadata duplicateItem = builder.getItems().get(aIndexMap.get(aKey)); item = KubernetesResourceUtil.mergeResources(item, duplicateItem, log, false); builder.setToItems(aIndexMap.get(aKey), item); } else { aIndexMap.put(aKey, nItems++); builder.addToItems(item); } } }
/** * Read all Kubernetes resource fragments from a directory and create a {@link KubernetesListBuilder} which * can be adapted later. * * @param apiVersions the api versions to use * @param defaultName the default name to use when none is given * @param resourceFiles files to add. * @return the list builder * @throws IOException */ public static KubernetesListBuilder readResourceFragmentsFrom(ResourceVersioning apiVersions, String defaultName, File[] resourceFiles) throws IOException { KubernetesListBuilder builder = new KubernetesListBuilder(); if (resourceFiles != null) { for (File file : resourceFiles) { HasMetadata resource = getResource(apiVersions, file, defaultName); builder.addToItems(resource); } } return builder; }
public void filterAndAddItemsToBuilder(KubernetesListBuilder builder, List<HasMetadata> items) { Map<KindAndName, Integer> aIndexMap = new HashMap<>(); int nItems = 0; // Populate map with existing items in the builder for(int index = 0; index < builder.getItems().size(); index++, nItems++) { HasMetadata aItem = builder.getItems().get(index); KindAndName aKey = new KindAndName(aItem); aIndexMap.put(aKey, index); } for(HasMetadata item : items) { KindAndName aKey = new KindAndName(item); if(aIndexMap.containsKey(aKey)) { // Merge the override fragments, and remove duplicate HasMetadata duplicateItem = builder.getItems().get(aIndexMap.get(aKey)); item = KubernetesResourceUtil.mergeResources(item, duplicateItem, log, false); builder.setToItems(aIndexMap.get(aKey), item); } else { aIndexMap.put(aKey, nItems++); builder.addToItems(item); } } }
private void addProfiledResourcesFromSubirectories(KubernetesListBuilder builder, File resourceDir, EnricherManager enricherManager) throws IOException, MojoExecutionException { File[] profileDirs = resourceDir.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return pathname.isDirectory(); } }); if (profileDirs != null) { for (File profileDir : profileDirs) { Profile profile = ProfileUtil.findProfile(profileDir.getName(), resourceDir); if (profile == null) { throw new MojoExecutionException(String.format("Invalid profile '%s' given as directory in %s. " + "Please either define a profile of this name or move this directory away", profileDir.getName(), resourceDir)); } ProcessorConfig enricherConfig = profile.getEnricherConfig(); File[] resourceFiles = KubernetesResourceUtil.listResourceFragments(profileDir); if (resourceFiles.length > 0) { KubernetesListBuilder profileBuilder = readResourceFragments(resourceFiles); enricherManager.createDefaultResources(enricherConfig, profileBuilder); enricherManager.enrich(enricherConfig, profileBuilder); KubernetesList profileItems = profileBuilder.build(); for (HasMetadata item : profileItems.getItems()) { builder.addToItems(item); } } } } }
private KubernetesList removeOpenShiftObjects(KubernetesList list) { KubernetesListBuilder ret = new KubernetesListBuilder(); ret.withMetadata(list.getMetadata()); for (HasMetadata item : list.getItems()) { if (!isOpenshiftItem(item)) { ret.addToItems(item); } else { log.verbose("kubernetes.yml: Removed OpenShift specific resource '%s' of type %s", KubernetesHelper.getName(item), KubernetesHelper.getKind(item)); } } return ret.build(); }