@Override public KubernetesList process(Map<String, String> valuesMap) { Template t = get(); try { List<Parameter> parameters = t.getParameters(); if (parameters != null) { for (Parameter p : parameters) { String v = valuesMap.get(p.getName()); if (v != null) { p.setGenerate(null); p.setValue(v); } } } RequestBody body = RequestBody.create(JSON, JSON_MAPPER.writeValueAsString(t)); Request.Builder requestBuilder = new Request.Builder().post(body).url(getProcessUrl()); t = handleResponse(requestBuilder); KubernetesList l = new KubernetesList(); l.setItems(t.getObjects()); return l; } catch (Exception e) { throw KubernetesClientException.launderThrowable(forOperationType("process"), e); } }
public KubernetesList processLocally(Map<String, String> valuesMap) { String namespace = getItem() != null ? getItem().getMetadata().getNamespace() : getNamespace(); if (namespace == null) { namespace = getConfig().getNamespace(); String name = getItem() != null ? getItem().getMetadata().getName() : getName(); .get(); List<Parameter> parameters = t != null ? t.getParameters() : null; KubernetesList list = new KubernetesListBuilder() .withItems(t != null && t.getObjects() != null ? t.getObjects() : Collections.<HasMetadata>emptyList()) .build();
private static Template createTemplateWithObjects(KubernetesList kubernetesResources, Template template) { List<io.fabric8.openshift.api.model.Parameter> parameters = template.getParameters(); List<HasMetadata> items = kubernetesResources.getItems(); Template tempTemplate = null; if (parameters != null && parameters.size() > 0 && items != null && items.size() > 0) { tempTemplate = new Template(); tempTemplate.setMetadata(template.getMetadata()); tempTemplate.setParameters(parameters); tempTemplate.setObjects(items); } return tempTemplate; }
public static void main(String[] args) throws IOException { try (OpenShiftClient client = new DefaultOpenShiftClient()) { try { client.namespaces().createNew().withNewMetadata().withName("thisisatest").endMetadata().done(); Template t = client.templates().load(TemplateExample.class.getResourceAsStream("/test-template.yml")).get(); for (Parameter p : t.getParameters()) { System.out.println(p.getName()); } t = client.templates().load(TemplateExample.class.getResourceAsStream("/test-template.yml")).get(); t = client.templates().inNamespace("thisisatest").load(TemplateExample.class.getResourceAsStream("/test-template.yml")).create(); t = client.templates().inNamespace("thisisatest").withName("eap6-basic-sti").get(); System.out.println(t.getMetadata().getName()); KubernetesList l = client.templates().inNamespace("thisisatest").withName("eap6-basic-sti").process(); System.out.println(l.getItems().size()); l = client.lists().load(TemplateExample.class.getResourceAsStream("/test-list.yml")).get(); System.out.println(l.getItems().size()); l = client.lists().inNamespace("thisisatest").load(TemplateExample.class.getResourceAsStream("/test-list.yml")).create(); } finally { // And finally clean up the namespace client.namespaces().withName("thisisatest").delete(); logger.info("Deleted namespace"); } } } }
public TemplateBuilder(Template instance,Boolean validationEnabled){ this.fluent = this; this.withApiVersion(instance.getApiVersion()); this.withKind(instance.getKind()); this.withLabels(instance.getLabels()); this.withMetadata(instance.getMetadata()); this.withObjects(instance.getObjects()); this.withParameters(instance.getParameters()); this.validationEnabled = validationEnabled; }
private static <T> List<HasMetadata> asHasMetadata(T item, Boolean enableProccessing) { List<HasMetadata> result = new ArrayList<>(); if (item instanceof KubernetesList) { result.addAll(((KubernetesList) item).getItems()); } else if (item instanceof Template) { if (!enableProccessing) { result.addAll(((Template) item).getObjects()); } else { result.addAll(processTemplate((Template)item, false)); } } else if (item instanceof KubernetesResourceList) { result.addAll(((KubernetesResourceList) item).getItems()); } else if (item instanceof HasMetadata) { result.add((HasMetadata) item); } else if (item instanceof String) { try (InputStream is = new ByteArrayInputStream(((String)item).getBytes(StandardCharsets.UTF_8))) { return asHasMetadata(unmarshal(is), enableProccessing); } catch (IOException e) { throw KubernetesClientException.launderThrowable(e); } } else if (item instanceof Collection) { for (Object o : (Collection)item) { if (o instanceof HasMetadata) { result.add((HasMetadata) o); } } } return result; }
public static Template combineTemplates(Template firstTemplate, Template template) { List<HasMetadata> objects = template.getObjects(); if (objects != null) { for (HasMetadata object : objects) { addTemplateObject(firstTemplate, object); } } List<Parameter> parameters = firstTemplate.getParameters(); if (parameters == null) { parameters = new ArrayList<>(); firstTemplate.setParameters(parameters); } combineParameters(parameters, template.getParameters()); String name = KubernetesHelper.getName(template); if (StringUtils.isNotBlank(name)) { // lets merge all the fabric8 annotations using the template id qualifier as a postfix Map<String, String> annotations = KubernetesHelper.getOrCreateAnnotations(firstTemplate); Map<String, String> otherAnnotations = KubernetesHelper.getOrCreateAnnotations(template); Set<Map.Entry<String, String>> entries = otherAnnotations.entrySet(); for (Map.Entry<String, String> entry : entries) { String key = entry.getKey(); String value = entry.getValue(); if (!annotations.containsKey(key)) { annotations.put(key, value); } } } return firstTemplate; }
private static void addTemplateObject(Template template, HasMetadata object) { List<HasMetadata> objects = template.getObjects(); objects.add(object); template.setObjects(objects); }
public void addMissingParameters(Template template) { List<Parameter> parameters = template.getParameters(); if (parameters == null) { parameters = new ArrayList<>(); } Map<String, Parameter> map = new HashMap<>(); for (Parameter parameter : parameters) { map.put(parameter.getName(), parameter); } mergeParametersIntoMap(map, templateParameters.values()); for (Parameter parameter : map.values()) { if (!parameters.contains(parameter)) { parameters.add(parameter); } } template.setParameters(parameters); }
public SortedMap<String, Parameter> getParameterMap() { SortedMap<String, Parameter> map = new TreeMap<String, Parameter>(); if (template != null) { List<io.fabric8.openshift.api.model.Parameter> list = template.getParameters(); for (io.fabric8.openshift.api.model.Parameter param : list) { map.put(param.getName(), new Parameter(param)); } } return map; }
@Test public void testUnmarshalYAMLTemplate() throws IOException { Template t = new OperationSupport().unmarshal(getClass().getResourceAsStream("/test-template.yml"), Template.class); assertEquals("eap6-basic-sti", t.getMetadata().getName()); }
public TemplateBuilder(Boolean validationEnabled){ this(new Template(), validationEnabled); } public TemplateBuilder(TemplateFluent<?> fluent){
private Template extractAndRemoveTemplates(List<HasMetadata> items) { Template extractedTemplate = null; for (HasMetadata item : new ArrayList<>(items)) { if (item instanceof Template && !KubernetesResourceUtil.isAppCatalogResource(item)) { Template template = (Template) item; if (extractedTemplate == null) { extractedTemplate = template; } else { extractedTemplate = OpenshiftHelper.combineTemplates(extractedTemplate, template); } items.remove(item); } } if (extractedTemplate != null) { extractedTemplate.setObjects(items); } return extractedTemplate; }
public TemplateFluentImpl(Template instance){ this.withApiVersion(instance.getApiVersion()); this.withKind(instance.getKind()); this.withLabels(instance.getLabels()); this.withMetadata(instance.getMetadata()); this.withObjects(instance.getObjects()); this.withParameters(instance.getParameters()); }
@Override public Void apply(List<HasMetadata> items) { List<HasMetadata> templates = Arrays.asList(items.toArray(new HasMetadata[items.size()])); // lets remove all the plain resources (without any ${PARAM} expressions) which match objects // in the Templates found from the k8s-templates.yml files which still contain ${PARAM} expressions // to preserve the parameter expressions for dependent kubernetes resources for (HasMetadata resource : templates) { if (resource instanceof Template) { Template template = (Template) resource; List<HasMetadata> objects = template.getObjects(); if (objects != null) { removeTemplateObjects(kubernetesItems, objects); kubernetesItems.addAll(objects); } } } return null; } });
private void createTemplateParameters(File outputDir, Template template, File templatesDir) throws MojoExecutionException { JsonNodeFactory nodeFactory = JsonNodeFactory.instance; ObjectNode values = nodeFactory.objectNode(); List<io.fabric8.openshift.api.model.Parameter> parameters = template.getParameters(); if (parameters == null || parameters.isEmpty()) { return;
@Test public void testUnmarshalJSONTemplate() throws IOException { Template t = new OperationSupport().unmarshal(getClass().getResourceAsStream("/test-template.json"), Template.class); assertEquals("eap6-basic-sti", t.getMetadata().getName()); }
public TemplateBuilder(TemplateFluent<?> fluent,Boolean validationEnabled){ this(fluent, new Template(), validationEnabled); } public TemplateBuilder(TemplateFluent<?> fluent,Template instance){
public TemplateBuilder(TemplateFluent<?> fluent,Template instance,Boolean validationEnabled){ this.fluent = fluent; fluent.withApiVersion(instance.getApiVersion()); fluent.withKind(instance.getKind()); fluent.withLabels(instance.getLabels()); fluent.withMetadata(instance.getMetadata()); fluent.withObjects(instance.getObjects()); fluent.withParameters(instance.getParameters()); this.validationEnabled = validationEnabled; } public TemplateBuilder(Template instance){
private static List<HasMetadata> processTemplate(Template template, Boolean failOnMissing) { List<Parameter> parameters = template != null ? template.getParameters() : null; KubernetesList list = new KubernetesListBuilder() .withItems(template.getObjects()) .build();