@Override public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable<HasMetadata, Boolean> resourceList(HasMetadata... items) { return resourceList(new KubernetesListBuilder().withItems(items).build()); }
@Override public void adapt(KubernetesListBuilder builder) { // Add to all objects in the builder builder.accept(new TypedVisitor<ObjectMetaBuilder>() { @Override public void visit(ObjectMetaBuilder element) { Map<String, String> labels = element.getLabels(); MapUtil.mergeIfAbsent(labels, createLabels()); } }); }
@Override public void adapt(KubernetesListBuilder builder) { List<HasMetadata> items = notNullList(builder.getItems()); Map<String, Map<String, HasMetadata>> kindMaps = new HashMap<>(); List<HasMetadata> removeList = new ArrayList<>(); for (HasMetadata item : items) { String kind = getKind(item); String name = KubernetesHelper.getName(item); Map<String, HasMetadata> map = kindMaps.get(kind); if (map == null) { map = new HashMap<>(); kindMaps.put(kind, map); } HasMetadata old = map.get(name); if (old != null) { HasMetadata removeItem = mergeEntities(old, item); if (removeItem != null) { removeList.add(removeItem); } } else { map.put(name, item); } } items.removeAll(removeList); builder.withItems(items); }
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(); }
public KubernetesListBuilder(KubernetesList instance,Boolean validationEnabled){ this.fluent = this; this.withApiVersion(instance.getApiVersion()); this.withItems(instance.getItems()); this.withKind(instance.getKind()); this.withMetadata(instance.getMetadata()); this.validationEnabled = validationEnabled; }
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(); }
/** * Generate cluster for a given destination group. * * NOTE: This method assumes that all destinations within a group share the same properties. * */ @Override public BrokerCluster generateCluster(String clusterId, int numReplicas, Address address, AddressPlan addressPlan, StandardInfraConfig standardInfraConfig) throws Exception { KubernetesListBuilder resourcesBuilder = new KubernetesListBuilder(); if (standardInfraConfig != null) { String templateName = getTemplateName(address, addressPlan, standardInfraConfig); KubernetesList newResources = processTemplate(clusterId, numReplicas, address, templateName, standardInfraConfig); resourcesBuilder.addAllToItems(newResources.getItems()); } return new BrokerCluster(clusterId, resourcesBuilder.build()); }
@Override public KubernetesListBuilder edit(KubernetesList item) { return new KubernetesListBuilder(item); }
private KubernetesList convertToOpenShiftResources(KubernetesList resources) throws MojoExecutionException { KubernetesListBuilder builder = new KubernetesListBuilder(); builder.withMetadata(resources.getMetadata()); List<HasMetadata> items = resources.getItems(); List<HasMetadata> objects = new ArrayList<>(); return builder.build();
final Object instance = SessionListener.class.getClassLoader().loadClass(processorClassName).newInstance(); KubernetesListBuilder builder = new KubernetesListBuilder(kubernetesList); return builder.build(); } catch (Exception e) { session.getLogger().warn("Failed to load processor class:" + processorClassName + ". Ignoring");
/** * 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 KubernetesList done(){ return function.apply(builder.build()); }
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 void applyResourceObjects(BuildServiceConfig config, OpenShiftClient client, KubernetesListBuilder builder) throws Exception { if (config.getEnricherTask() != null) { config.getEnricherTask().execute(builder); } if (builder.hasItems()) { KubernetesList k8sList = builder.build(); client.lists().create(k8sList); } }
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); } } }
/** * Returns the items on the builder without any validation errors */ public static List<HasMetadata> getItems(KubernetesListBuilder builder) { List<HasMetadata> answer = null; if (builder != null) { try { answer = builder.getItems(); } catch (Throwable e) { // ignore any validation errors } } return answer != null ? answer : new ArrayList<>(); }
@Override public void addMissingResources(final KubernetesListBuilder listBuilder) { final List<Route> routes = new ArrayList<>(); listBuilder.accept(new TypedVisitor<ServiceBuilder>() { @Override public void visit(ServiceBuilder serviceBuilder) { addRoute(listBuilder, serviceBuilder, routes); } }); if (!routes.isEmpty()) { Route[] routeArray = new Route[routes.size()]; routes.toArray(routeArray); listBuilder.addToRouteItems(routeArray); } }
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); } } }
@Override public void addMissingResources(KubernetesListBuilder builder) { if (debugEnabled()) { int count = 0; List<HasMetadata> items = builder.getItems(); if (items != null) { for (HasMetadata item : items) { if (enableDebug(item)) { count++; } } } if (count > 0) { builder.withItems(items); } log.verbose("Enabled debugging on " + count + " resource(s) thanks to the " + ENABLE_DEBUG_MAVEN_PROPERTY + " property"); } else { log.verbose("Debugging not enabled. To enable try setting the " + ENABLE_DEBUG_MAVEN_PROPERTY + " maven or system property to 'true'"); } }
public KubernetesListBuilder( KubernetesList instance ){ this.fluent = this; this.withApiVersion(instance.getApiVersion()); this.withItems(instance.getItems()); this.withKind(instance.getKind()); this.withMetadata(instance.getMetadata()); }