Search in sources :

Example 1 with Dummy

use of io.fabric8.kubernetes.examples.crds.Dummy in project fabric8-maven-plugin by fabric8io.

the class KubernetesResourceUtilTest method containerName.

@Test
public void containerName() {
    ImageConfiguration imageConfiguration = new ImageConfiguration.Builder().name("dummy-image").registry("example.com/someregistry").name("test").build();
    String containerName = KubernetesResourceUtil.extractContainerName(new GroupArtifactVersion("io.fabric8-test-", "fabric8-maven-plugin-dummy", "0"), imageConfiguration);
    assertTrue(containerName.matches(KubernetesResourceUtil.CONTAINER_NAME_REGEX));
}
Also used : ImageConfiguration(io.fabric8.maven.docker.config.ImageConfiguration) KubernetesListBuilder(io.fabric8.kubernetes.api.model.KubernetesListBuilder) GroupArtifactVersion(io.fabric8.maven.core.model.GroupArtifactVersion) Test(org.junit.Test)

Example 2 with Dummy

use of io.fabric8.kubernetes.examples.crds.Dummy in project kubernetes-client by fabric8io.

the class SharedInformerFactoryImplTest method testSharedIndexInformerForCustomResourceNoType.

@Test
void testSharedIndexInformerForCustomResourceNoType() {
    // Given
    SharedInformerFactory sharedInformerFactory = new SharedInformerFactoryImpl(mockBaseClient, executorService);
    CustomResourceDefinitionContext context = new CustomResourceDefinitionContext.Builder().withKind("Dummy").withScope("Namespaced").withVersion("v1").withGroup("demos.fabric8.io").withPlural("dummies").build();
    // When
    SharedIndexInformer<GenericKubernetesResource> informer = sharedInformerFactory.inNamespace("ns1").sharedIndexInformerForCustomResource(context, 10 * 1000L);
    // Then
    assertThat(informer).isNotNull();
}
Also used : CustomResourceDefinitionContext(io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext) SharedInformerFactoryImpl(io.fabric8.kubernetes.client.informers.impl.SharedInformerFactoryImpl) GenericKubernetesResource(io.fabric8.kubernetes.api.model.GenericKubernetesResource) Test(org.junit.jupiter.api.Test)

Example 3 with Dummy

use of io.fabric8.kubernetes.examples.crds.Dummy in project kubernetes-client by fabric8io.

the class CRDExample method main.

/**
 * Example of Cluster and Namespaced scoped K8S Custom Resources.
 * To test Cluster scoped resource use "--cluster" as first argument.
 * To test Namespaced resource provide namespace as first argument (namespace must exists in K8S).
 *
 * @param args Either "--cluster" or namespace name.
 */
public static void main(String[] args) {
    boolean resourceNamespaced = true;
    String namespace = null;
    if (args.length > 0) {
        if ("--cluster".equals(args[0])) {
            resourceNamespaced = false;
        } else {
            namespace = args[0];
        }
    }
    try (final KubernetesClient client = new KubernetesClientBuilder().build()) {
        if (resourceNamespaced) {
            if (namespace == null) {
                namespace = client.getNamespace();
            }
            if (namespace == null) {
                System.err.println("No namespace specified and no default defined!");
                return;
            }
            System.out.println("Using namespace: " + namespace);
        } else {
            System.out.println("Creating cluster scoped resource");
        }
        if (LOG_ROOT_PATHS) {
            RootPaths rootPaths = client.rootPaths();
            if (rootPaths != null) {
                List<String> paths = rootPaths.getPaths();
                if (paths != null) {
                    System.out.println("Supported API Paths:");
                    for (String path : paths) {
                        System.out.println("    " + path);
                    }
                    System.out.println();
                }
            }
        }
        CustomResourceDefinitionList crds = client.apiextensions().v1().customResourceDefinitions().list();
        List<CustomResourceDefinition> crdsItems = crds.getItems();
        System.out.println("Found " + crdsItems.size() + " CRD(s)");
        CustomResourceDefinition dummyCRD = null;
        final String dummyCRDName = CustomResource.getCRDName(Dummy.class);
        for (CustomResourceDefinition crd : crdsItems) {
            ObjectMeta metadata = crd.getMetadata();
            if (metadata != null) {
                String name = metadata.getName();
                System.out.println("    " + name + " => " + metadata.getSelfLink());
                if (dummyCRDName.equals(name)) {
                    dummyCRD = crd;
                }
            }
        }
        if (dummyCRD != null) {
            System.out.println("Found CRD: " + dummyCRD.getMetadata().getSelfLink());
        } else {
            dummyCRD = CustomResourceDefinitionContext.v1CRDFromCustomResourceType(Dummy.class).editSpec().editVersion(0).withNewSchema().withNewOpenAPIV3Schema().withTitle("dummy").withType("object").addToRequired("spec").addToProperties("spec", new JSONSchemaPropsBuilder().withType("object").addToProperties("foo", new JSONSchemaPropsBuilder().withType("string").build()).addToProperties("bar", new JSONSchemaPropsBuilder().withType("string").build()).build()).endOpenAPIV3Schema().endSchema().endVersion().endSpec().build();
            client.apiextensions().v1().customResourceDefinitions().create(dummyCRD);
            System.out.println("Created CRD " + dummyCRD.getMetadata().getName());
        }
        // wait a beat for the endpoints to be ready
        Thread.sleep(5000);
        // lets create a client for the CRD
        NonNamespaceOperation<Dummy, DummyList, Resource<Dummy>> dummyClient = client.resources(Dummy.class, DummyList.class);
        if (resourceNamespaced) {
            dummyClient = ((MixedOperation<Dummy, DummyList, Resource<Dummy>>) dummyClient).inNamespace(namespace);
        }
        CustomResourceList<Dummy> dummyList = dummyClient.list();
        List<Dummy> items = dummyList.getItems();
        System.out.println("  found " + items.size() + " dummies");
        for (Dummy item : items) {
            System.out.println("    " + item);
        }
        Dummy dummy = new Dummy();
        ObjectMeta metadata = new ObjectMeta();
        metadata.setName("foo");
        dummy.setMetadata(metadata);
        DummySpec dummySpec = new DummySpec();
        Date now = new Date();
        dummySpec.setBar("beer: " + now);
        dummySpec.setFoo("cheese: " + now);
        dummy.setSpec(dummySpec);
        Dummy created = dummyClient.createOrReplace(dummy);
        System.out.println("Upserted " + dummy);
        created.getSpec().setBar("otherBar");
        dummyClient.createOrReplace(created);
        System.out.println("Watching for changes to Dummies");
        dummyClient.withResourceVersion(created.getMetadata().getResourceVersion()).watch(new Watcher<Dummy>() {

            @Override
            public void eventReceived(Action action, Dummy resource) {
                System.out.println("==> " + action + " for " + resource);
                if (resource.getSpec() == null) {
                    logger.error("No Spec for resource {}", resource);
                }
            }

            @Override
            public void onClose(WatcherException cause) {
            }
        });
        System.in.read();
    } catch (KubernetesClientException e) {
        logger.error(e.getMessage(), e);
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
    }
}
Also used : DummySpec(io.fabric8.kubernetes.examples.crds.DummySpec) JSONSchemaPropsBuilder(io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaPropsBuilder) KubernetesClientBuilder(io.fabric8.kubernetes.client.KubernetesClientBuilder) ObjectMeta(io.fabric8.kubernetes.api.model.ObjectMeta) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) RootPaths(io.fabric8.kubernetes.api.model.RootPaths) CustomResourceDefinition(io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinition) Resource(io.fabric8.kubernetes.client.dsl.Resource) CustomResource(io.fabric8.kubernetes.client.CustomResource) DummyList(io.fabric8.kubernetes.examples.crds.DummyList) Date(java.util.Date) KubernetesClientException(io.fabric8.kubernetes.client.KubernetesClientException) WatcherException(io.fabric8.kubernetes.client.WatcherException) WatcherException(io.fabric8.kubernetes.client.WatcherException) CustomResourceDefinitionList(io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionList) Dummy(io.fabric8.kubernetes.examples.crds.Dummy) KubernetesClientException(io.fabric8.kubernetes.client.KubernetesClientException)

Example 4 with Dummy

use of io.fabric8.kubernetes.examples.crds.Dummy in project kubernetes-client by fabric8io.

the class BuildConfigTest method testBinaryBuildFromInputStream.

@Test
// Seems that in this version of mockwebserver, posting using an inputstream doesn't work that well, so we'll have to ignore.
@Disabled
void testBinaryBuildFromInputStream() {
    server.expect().post().withPath("/apis/build.openshift.io/v1/namespaces/ns1/buildconfigs/bc2/instantiatebinary?commit=some%20commit&revision.authorName=author%20name&revision.authorEmail=author@someorg.com&revision.committerName=committer%20name&revision.committerEmail=committer@someorg.com").andReturn(201, new BuildBuilder().withNewMetadata().withName("bc2").endMetadata().build()).once();
    InputStream dummy = new ByteArrayInputStream("".getBytes());
    Build build = client.buildConfigs().inNamespace("ns1").withName("bc2").instantiateBinary().withCommitterName("committer name").withCommitterEmail("committer@someorg.com").withAuthorName("author name").withAuthorEmail("author@someorg.com").withMessage("some commit").fromInputStream(dummy);
    assertNotNull(build);
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Build(io.fabric8.openshift.api.model.Build) BuildBuilder(io.fabric8.openshift.api.model.BuildBuilder) Test(org.junit.jupiter.api.Test) Disabled(org.junit.jupiter.api.Disabled)

Example 5 with Dummy

use of io.fabric8.kubernetes.examples.crds.Dummy in project kubernetes-client by fabric8io.

the class CustomResourceInformerExample method main.

public static void main(String[] args) {
    try (KubernetesClient client = new KubernetesClientBuilder().build()) {
        SharedInformerFactory sharedInformerFactory = client.informers();
        SharedIndexInformer<Dummy> podInformer = sharedInformerFactory.sharedIndexInformerForCustomResource(Dummy.class, 60 * 1000L);
        logger.info("Informer factory initialized.");
        podInformer.addEventHandler(new ResourceEventHandler<Dummy>() {

            @Override
            public void onAdd(Dummy pod) {
                logger.info("{} dummy added", pod.getMetadata().getName());
            }

            @Override
            public void onUpdate(Dummy oldPod, Dummy newPod) {
                logger.info("{} dummy updated", oldPod.getMetadata().getName());
            }

            @Override
            public void onDelete(Dummy pod, boolean deletedFinalStateUnknown) {
                logger.info("{} dummy deleted", pod.getMetadata().getName());
            }
        });
        sharedInformerFactory.addSharedInformerEventListener(ex -> logger.error("Exception occurred, but caught: {}", ex.getMessage()));
        logger.info("Starting all registered informers");
        sharedInformerFactory.startAllRegisteredInformers();
        Executors.newSingleThreadExecutor().submit(() -> {
            Thread.currentThread().setName("HAS_SYNCED_THREAD");
            try {
                for (; ; ) {
                    logger.info("podInformer.hasSynced() : {}", podInformer.hasSynced());
                    Thread.sleep(10 * 1000L);
                }
            } catch (InterruptedException inEx) {
                Thread.currentThread().interrupt();
                logger.warn("HAS_SYNCED_THREAD interrupted: {}", inEx.getMessage());
            }
        });
        final Dummy toCreate = new Dummy();
        toCreate.getMetadata().setName("dummy");
        if (client.getConfiguration().getNamespace() != null) {
            toCreate.getMetadata().setNamespace(client.getConfiguration().getNamespace());
        } else if (client.getNamespace() != null) {
            toCreate.getMetadata().setNamespace(client.getNamespace());
        } else {
            toCreate.getMetadata().setNamespace(client.namespaces().list().getItems().stream().findFirst().map(HasMetadata::getMetadata).map(ObjectMeta::getNamespace).orElse("default"));
        }
        client.customResources(Dummy.class).createOrReplace(toCreate);
        // Wait for some time now
        TimeUnit.MINUTES.sleep(5);
    } catch (InterruptedException interruptedException) {
        Thread.currentThread().interrupt();
        logger.warn("interrupted: {}", interruptedException.getMessage());
    }
}
Also used : KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) HasMetadata(io.fabric8.kubernetes.api.model.HasMetadata) SharedInformerFactory(io.fabric8.kubernetes.client.informers.SharedInformerFactory) KubernetesClientBuilder(io.fabric8.kubernetes.client.KubernetesClientBuilder) Dummy(io.fabric8.kubernetes.examples.crds.Dummy)

Aggregations

Test (org.junit.jupiter.api.Test)16 Test (org.junit.Test)12 KubernetesClient (io.fabric8.kubernetes.client.KubernetesClient)8 Pod (io.fabric8.kubernetes.api.model.Pod)7 HashMap (java.util.HashMap)7 Map (java.util.Map)7 Secret (io.fabric8.kubernetes.api.model.Secret)6 List (java.util.List)6 GenericKubernetesResource (io.fabric8.kubernetes.api.model.GenericKubernetesResource)5 KubernetesClientBuilder (io.fabric8.kubernetes.client.KubernetesClientBuilder)5 Resource (io.fabric8.kubernetes.client.dsl.Resource)5 Date (java.util.Date)5 ObjectMeta (io.fabric8.kubernetes.api.model.ObjectMeta)4 PodBuilder (io.fabric8.kubernetes.api.model.PodBuilder)4 KubernetesVersion (io.strimzi.operator.KubernetesVersion)4 PlatformFeaturesAvailability (io.strimzi.operator.PlatformFeaturesAvailability)4 ClusterOperatorConfig (io.strimzi.operator.cluster.ClusterOperatorConfig)4 KafkaVersionTestUtils (io.strimzi.operator.cluster.KafkaVersionTestUtils)4 ResourceUtils (io.strimzi.operator.cluster.ResourceUtils)4 ResourceOperatorSupplier (io.strimzi.operator.cluster.operator.resource.ResourceOperatorSupplier)4