framework.RunKubectlOrDie("create", "-f", masterYaml, nsFlag) selectorKey, selectorValue := "component", "spark-master" label := labels.SelectorFromSet(labels.Set(map[string]string{selectorKey: selectorValue})) err := framework.WaitForPodsWithLabelRunning(c, ns, label) Expect(err).NotTo(HaveOccurred()) framework.Logf("Now polling for Master startup...") // Only one master pod: But its a natural way to look up pod names. forEachPod(selectorKey, selectorValue, func(pod api.Pod) { framework.Logf("Now waiting for master to startup in %v", pod.Name) _, err := framework.LookForStringInLog(ns, pod.Name, "spark-master", "Starting Spark master at", serverStartTimeout) Expect(err).NotTo(HaveOccurred()) }) By("waiting for master endpoint") err = framework.WaitForEndpoint(c, ns, "spark-master") Expect(err).NotTo(HaveOccurred()) forEachPod(selectorKey, selectorValue, func(pod api.Pod) { _, maErr := framework.LookForStringInLog(f.Namespace.Name, pod.Name, "spark-master", "Starting Spark master at", serverStartTimeout) if maErr != nil { framework.Failf("Didn't find target string. error:", maErr) } }) } worker := func() { By("starting workers") framework.Logf("Now starting Workers") framework.RunKubectlOrDie("create", "-f", workerControllerYaml, nsFlag) selectorKey, selectorValue := "component", "spark-worker" label := labels.SelectorFromSet(labels.Set(map[string]string{selectorKey: selectorValue})) err := framework.WaitForPodsWithLabelRunning(c, ns, label)
} rabbitmqServiceYaml := mkpath("rabbitmq-service.yaml") rabbitmqControllerYaml := mkpath("rabbitmq-controller.yaml") celeryControllerYaml := mkpath("celery-controller.yaml") flowerControllerYaml := mkpath("flower-controller.yaml") flowerServiceYaml := mkpath("flower-service.yaml") nsFlag := fmt.Sprintf("--namespace=%v", ns) By("starting rabbitmq") framework.RunKubectlOrDie("create", "-f", rabbitmqServiceYaml, nsFlag) framework.RunKubectlOrDie("create", "-f", rabbitmqControllerYaml, nsFlag) forEachPod(c, ns, "component", "rabbitmq", func(pod api.Pod) { _, err := framework.LookForStringInLog(ns, pod.Name, "rabbitmq", "Server startup complete", serverStartTimeout) Expect(err).NotTo(HaveOccurred()) }) err := framework.WaitForEndpoint(c, ns, "rabbitmq-service") Expect(err).NotTo(HaveOccurred()) By("starting celery") framework.RunKubectlOrDie("create", "-f", celeryControllerYaml, nsFlag) forEachPod(c, ns, "component", "celery", func(pod api.Pod) { _, err := framework.LookForStringInFile(ns, pod.Name, "celery", "/data/celery.log", " ready.", serverStartTimeout) Expect(err).NotTo(HaveOccurred()) }) By("starting flower") framework.RunKubectlOrDie("create", "-f", flowerServiceYaml, nsFlag) framework.RunKubectlOrDie("create", "-f", flowerControllerYaml, nsFlag) forEachPod(c, ns, "component", "flower", func(pod api.Pod) { // Do nothing. just wait for it to be up and running. })