Search in sources :

Example 1 with WithProject

use of io.dekorate.WithProject in project dekorate by dekorateio.

the class KubernetesManifestGeneratorTest method setup.

@BeforeAll
public static void setup() throws IOException {
    Path tempDir = Files.createTempDirectory("dekorate");
    WithProject withProject = new WithProject() {
    };
    withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
}
Also used : Path(java.nio.file.Path) File(java.io.File) WithProject(io.dekorate.WithProject) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 2 with WithProject

use of io.dekorate.WithProject in project dekorate by dekorateio.

the class KubernetesConfigGeneratorTest method shouldGenerateKubernetesWithoutWritingToFileSystem.

@Test
public void shouldGenerateKubernetesWithoutWritingToFileSystem() throws IOException {
    Path tempDir = Files.createTempDirectory("dekorate");
    WithProject withProject = new WithProject() {
    };
    withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
    SessionWriter writer = new SimpleFileWriter(withProject.getProject(), false);
    Session session = Session.getSession();
    session.setWriter(writer);
    KubernetesConfigGenerator generator = new DefaultKubernetesConfigGenerator(session.getConfigurationRegistry());
    Map<String, Object> map = new HashMap<String, Object>() {

        {
            put(KubernetesConfig.class.getName(), new HashMap<String, Object>() {

                {
                    put("name", "generator-test");
                    put("partOf", "generator-test-group");
                    put("version", "latest");
                    put("replicas", 2);
                    put("ports", new Map[] { new HashMap<String, Object>() {

                        {
                            put("containerPort", 8080);
                            put("name", "HTTP");
                        }
                    } });
                    put("livenessProbe", new HashMap<String, Object>() {

                        {
                            put("httpActionPath", "/health");
                        }
                    });
                }
            });
        }
    };
    generator.addPropertyConfiguration(map);
    final Map<String, String> result = session.close();
    KubernetesList list = session.getGeneratedResources().get("kubernetes");
    assertThat(list).isNotNull();
    assertThat(list.getItems()).filteredOn(i -> "Deployment".equals(i.getKind())).hasOnlyOneElementSatisfying(item -> {
        assertThat(item).isInstanceOfSatisfying(Deployment.class, dep -> {
            assertThat(dep.getSpec()).satisfies(spec -> {
                assertThat(spec.getReplicas()).isEqualTo(2);
                assertThat(spec.getTemplate().getSpec()).satisfies(podSpec -> {
                    assertThat(podSpec.getContainers()).hasOnlyOneElementSatisfying(container -> {
                        assertThat(container.getPorts()).hasOnlyOneElementSatisfying(port -> {
                            assertThat(port.getContainerPort()).isEqualTo(8080);
                            assertThat(port.getName()).isEqualTo("HTTP");
                        });
                        assertThat(container.getLivenessProbe().getHttpGet()).satisfies(httpGetAction -> {
                            assertThat(httpGetAction.getPath()).isEqualTo("/health");
                            assertThat(httpGetAction.getPort().getIntVal()).isEqualTo(8080);
                        });
                    });
                });
            });
        });
    });
    assertThat(tempDir.resolve("kubernetes.json")).doesNotExist();
    assertThat(tempDir.resolve("kubernetes.yml")).doesNotExist();
    assertThat(result).hasSize(5);
}
Also used : Path(java.nio.file.Path) WithProject(io.dekorate.WithProject) KubernetesList(io.fabric8.kubernetes.api.model.KubernetesList) Files(java.nio.file.Files) SimpleFileWriter(io.dekorate.processor.SimpleFileWriter) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) IOException(java.io.IOException) HashMap(java.util.HashMap) File(java.io.File) Test(org.junit.jupiter.api.Test) FileProjectFactory(io.dekorate.project.FileProjectFactory) Session(io.dekorate.Session) Map(java.util.Map) SessionWriter(io.dekorate.SessionWriter) Path(java.nio.file.Path) Deployment(io.fabric8.kubernetes.api.model.apps.Deployment) HashMap(java.util.HashMap) KubernetesList(io.fabric8.kubernetes.api.model.KubernetesList) WithProject(io.dekorate.WithProject) SessionWriter(io.dekorate.SessionWriter) File(java.io.File) HashMap(java.util.HashMap) Map(java.util.Map) SimpleFileWriter(io.dekorate.processor.SimpleFileWriter) Session(io.dekorate.Session) Test(org.junit.jupiter.api.Test)

Example 3 with WithProject

use of io.dekorate.WithProject in project dekorate by dekorateio.

the class ServiceBindingConfigGeneratorTest method shouldGenerateServiceBindingWithoutWritingToFileSystem.

@Test
public void shouldGenerateServiceBindingWithoutWritingToFileSystem() throws IOException {
    Path tempDir = Files.createTempDirectory("dekorate");
    WithProject withProject = new WithProject() {
    };
    withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
    SessionWriter writer = new SimpleFileWriter(withProject.getProject(), false);
    Session session = Session.getSession();
    session.setWriter(writer);
    ServiceBindingConfigGenerator generator = new DefaultServiceBindingConfigGenerator(session.getConfigurationRegistry());
    final HashMap<String, Object>[] services = new HashMap[1];
    services[0] = new HashMap<String, Object>() {

        {
            put("group", "postgresql.dev");
            put("kind", "Database");
            put("name", "demo-database");
            put("id", "postgresDB");
        }
    };
    final HashMap<String, Object>[] customEnvVar = new HashMap[1];
    customEnvVar[0] = new HashMap<String, Object>() {

        {
            put("name", "foo");
            put("value", "bar");
            put("configmap", "baz");
        }
    };
    final HashMap<String, Object> bindingPath = new HashMap<String, Object>();
    bindingPath.put("secretPath", "/var");
    bindingPath.put("containerPath", ".spec");
    final HashMap<String, Object> application = new HashMap<String, Object>();
    application.put("group", "apps");
    application.put("kind", "Deployment");
    application.put("version", "v1");
    application.put("name", "servicebinding-test");
    Map<String, Object> map = new HashMap<String, Object>() {

        {
            put(ServiceBindingConfig.class.getName(), new HashMap<String, Object>() {

                {
                    put("name", "servicebinding-test-binding");
                    put("application", application);
                    put("services", services);
                    put("envVarPrefix", "postgres");
                    put("bindingPath", bindingPath);
                    put("customEnvVar", customEnvVar);
                }
            });
        }
    };
    generator.addPropertyConfiguration(map);
    final Map<String, String> result = session.close();
    KubernetesList list = session.getGeneratedResources().get("kubernetes");
    assertThat(list).isNotNull();
    assertThat(list.getItems()).filteredOn(i -> "ServiceBinding".equals(i.getKind())).hasOnlyOneElementSatisfying(item -> {
        assertThat(item).isInstanceOfSatisfying(ServiceBinding.class, s -> {
            assertThat(s.getSpec()).satisfies(spec -> {
                assertThat(spec.getEnvVarPrefix()).isEqualTo("postgres");
                assertThat(spec.getApplication().getKind()).isEqualTo("Deployment");
                assertThat(spec.getApplication().getResource()).isEqualTo("deployments");
                assertThat(spec.getApplication().getVersion()).isEqualTo("v1");
                assertThat(spec.getApplication().getName()).isEqualTo("servicebinding-test");
                assertThat(spec.getApplication().getGroup()).isEqualTo("apps");
                assertThat(spec.getApplication().getBindingPath().getContainerPath()).isEqualTo(".spec");
                assertThat(spec.getApplication().getBindingPath().getSecretPath()).isEqualTo("/var");
                assertThat(spec.getServices()[0].getGroup()).isEqualTo("postgresql.dev");
                assertThat(spec.getServices()[0].getName()).isEqualTo("demo-database");
                assertThat(spec.getServices()[0].getId()).isEqualTo("postgresDB");
                assertThat(spec.getServices()[0].getKind()).isEqualTo("Database");
                assertThat(spec.getCustomEnvVar()[0].getName()).isEqualTo("foo");
                assertThat(spec.getCustomEnvVar()[0].getValueFrom().getConfigMapKeyRef().getKey()).isEqualTo("bar");
                assertThat(spec.getCustomEnvVar()[0].getValueFrom().getConfigMapKeyRef().getName()).isEqualTo("baz");
            });
        });
    });
    assertThat(tempDir.resolve("kubernetes.json")).doesNotExist();
    assertThat(tempDir.resolve("kubernetes.yml")).doesNotExist();
    assertThat(result).hasSize(6);
}
Also used : Path(java.nio.file.Path) WithProject(io.dekorate.WithProject) KubernetesList(io.fabric8.kubernetes.api.model.KubernetesList) Files(java.nio.file.Files) SimpleFileWriter(io.dekorate.processor.SimpleFileWriter) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) IOException(java.io.IOException) HashMap(java.util.HashMap) File(java.io.File) Test(org.junit.jupiter.api.Test) FileProjectFactory(io.dekorate.project.FileProjectFactory) ServiceBinding(io.dekorate.servicebinding.model.ServiceBinding) Session(io.dekorate.Session) Map(java.util.Map) SessionWriter(io.dekorate.SessionWriter) Path(java.nio.file.Path) HashMap(java.util.HashMap) KubernetesList(io.fabric8.kubernetes.api.model.KubernetesList) WithProject(io.dekorate.WithProject) SessionWriter(io.dekorate.SessionWriter) File(java.io.File) SimpleFileWriter(io.dekorate.processor.SimpleFileWriter) Session(io.dekorate.Session) Test(org.junit.jupiter.api.Test)

Example 4 with WithProject

use of io.dekorate.WithProject in project dekorate by dekorateio.

the class ServiceBindingResourceGeneratorTest method setup.

@BeforeAll
public static void setup() throws IOException {
    Path tempDir = Files.createTempDirectory("dekorate");
    WithProject withProject = new WithProject() {
    };
    withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
}
Also used : Path(java.nio.file.Path) File(java.io.File) WithProject(io.dekorate.WithProject) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 5 with WithProject

use of io.dekorate.WithProject in project dekorate by dekorateio.

the class TektonManifestGeneratorTest method setup.

@BeforeAll
public static void setup() throws IOException {
    Path tempDir = Files.createTempDirectory("dekorate");
    WithProject withProject = new WithProject() {
    };
    withProject.setProject(FileProjectFactory.create(new File(".")).withDekorateOutputDir(tempDir.toAbsolutePath().toString()).withDekorateMetaDir(tempDir.toAbsolutePath().toString()));
}
Also used : Path(java.nio.file.Path) File(java.io.File) WithProject(io.dekorate.WithProject) BeforeAll(org.junit.jupiter.api.BeforeAll)

Aggregations

WithProject (io.dekorate.WithProject)10 File (java.io.File)10 Path (java.nio.file.Path)9 BeforeAll (org.junit.jupiter.api.BeforeAll)7 Session (io.dekorate.Session)5 SessionWriter (io.dekorate.SessionWriter)5 SimpleFileWriter (io.dekorate.processor.SimpleFileWriter)5 HashMap (java.util.HashMap)5 Test (org.junit.jupiter.api.Test)5 FileProjectFactory (io.dekorate.project.FileProjectFactory)4 KubernetesList (io.fabric8.kubernetes.api.model.KubernetesList)4 IOException (java.io.IOException)4 Files (java.nio.file.Files)4 Map (java.util.Map)4 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)4 DefaultOpenshiftConfigGenerator (io.dekorate.openshift.config.DefaultOpenshiftConfigGenerator)1 OpenshiftConfig (io.dekorate.openshift.config.OpenshiftConfig)1 OpenshiftConfigGenerator (io.dekorate.openshift.config.OpenshiftConfigGenerator)1 ServiceBinding (io.dekorate.servicebinding.model.ServiceBinding)1 Deployment (io.fabric8.kubernetes.api.model.apps.Deployment)1