2017-04-24 1 views
1

Ich erforsche die (undocumented?) events() API in Fabric8's Kubernetes client project.In einem Watcher im fabric8 Kubernetes Client Ereignisse() API, welche Ressourcen kann ich sehen?

Insbesondere sehe ich, dass ich so etwas wie folgendes tun:

client.events().inAnyNamespace().watch(new Watcher<Something>() { 
    @Override 
    public final void eventReceived(final Action action, final Something something) { 

    } 

    @Override 
    public final void onClose(final KubernetesClientException kubernetesClientException) { 
     if (kubernetesClientException != null) { 
     // log? throw? 
     } 
    } 
}); 

Was sind die zulässigen Werte von something und Something für etwas Nützliches zu geschehen? Ich nehme an, sie sind angeblich Dinge wie Pods, Services, etc. zu sein, aber ich bin mir nicht sicher.

Watcher's sole type parameter is declared as <T>, so würde es scheinen, ich könnte eine neue Watcher<Integer> erstellen, aber ich bin bereit, Geld zu wetten, das nie aufgerufen werden wird. Dies deutet darauf hin, dass es tatsächlich eine Grenze in der Praxis auf <T> gibt, aber ich weiß nicht, was es ist, oder warum es weggelassen worden wäre, wenn es so wäre.

Wenn ich raten müsste, würde ich aus dem Parameternamen erraten, resource, dass es so etwas wie T extendsResource<?, ?> aber auch hier wäre, das ist nur eine Vermutung.

Vielen Dank für Hinweise, insbesondere auf andere Dokumentation, die ich sicher verpasst habe.

Update # 1: Von hämmern um im Quellcode, kann ich sehen, dass der einzige Ort, der ein Watcher.Action ‚s eventReceived() Methode forces the payload to be considered to be a HasMetadata object genannt wird. Vielleicht ist das meine Antwort?

Antwort

1

Sie können beispielsweise einen bestimmten Pod oder einen bestimmten Job anzeigen. Der T-Typ ist in diesem Fall Pod bzw. Job. Versuchen Sie

kube.extensions().jobs().createNew()...done().watch(new Watcher<Job>(){...}) 
+0

Vielen Dank für Ihre Antwort. Sind das die einzigen erlaubten Typen? Oder kann ich einen Subtyp "Ressource" beobachten? Wenn ja, warum wird nicht "T" deklariert, stattdessen "T extends Resource "? –

+0

Ich glaube, dass Sie alle Jobs oder sogar alle Ereignisse beobachten können –

+0

Vielen Dank für Ihren Kommentar. Ich sehe 'Pod.java' nicht an irgendeinem offensichtlichen Ort (besonders hier: https://github.com/fabric8io/kubernetes-model/tree/master/kubernetes-model/src/main/java/io/fabric8/ kubernetes/api/Modell). Ist es ... erzeugt? in einem anderen Projekt? –

Verwandte Themen