Держите, пока не будут созданы стручки Java-клиента Kubernetes - PullRequest
0 голосов
/ 17 декабря 2018

Я создаю пользовательский объект с помощью java-клиента для API Kubernetes в методе beforeAll интеграционных тестов.После того, как пользовательский объект создан, стручки также созданы.Однако это работает только тогда, когда я установил Thread.sleep на несколько секунд.Без него объект создается, а затем выполняются все тесты.Я также определил наблюдение за статусами пользовательских объектов, но это тоже не помогает.Есть ли другой способ (кроме Thread.sleep) удерживать несколько секунд, пока не будут созданы модули?

Мой код для создания пользовательского объекта:

def createWatchCustomObjectsCalls() = {
    client.getHttpClient.setReadTimeout(0, TimeUnit.SECONDS)
    val watchCalls: Watch[V1Namespace]  = Watch.createWatch(client,
      apiInstance.listNamespacedCustomObjectCall(crdGroup, crdVersion,  crdNamespace, crdPlural, "true",  null, null, true,null,  null),
      new TypeToken[Watch.Response[V1Namespace]]{}.getType)
    watchCalls
  }

 override def beforeAll(): Unit = {
    val creationResourcePath = Source.getClass.getResource("/" + httpServerScriptName).getPath
    val serverStartupProcessBuilder = Seq("sh", creationResourcePath, "&") #> Console.out
    serverStartupProcessBuilder.run()

    val body = convertYamlToJson()
    val sparkAppCreation = apiInstance.createNamespacedCustomObject(crdGroup, crdVersion, crdNamespace, crdPlural, body,"true")
    println(sparkAppCreation)
}

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете синхронно проверить в цикле while, были ли созданы стручки:

// while
val currentPodList = getCoreV1Api()
                    .listPodForAllNamespaces(null /* _continue */,
                                            null /* fieldSelector */,
                                            null /* includeUninitialized */,
                                            null /* labelSelector */,
                                            null /* limit */,
                                            "false" /* pretty */,
                                            null /* resourceVersion */,
                                            null /* timeoutSeconds */,
                                            false /* watch */)
                    .getItems();
// check items from currentPodList
// end while
...