diff --git a/src/Brancher/BrancherHypernodeManager.php b/src/Brancher/BrancherHypernodeManager.php index 3d85f16..b30f08a 100644 --- a/src/Brancher/BrancherHypernodeManager.php +++ b/src/Brancher/BrancherHypernodeManager.php @@ -129,8 +129,8 @@ public function waitForAvailability(string $brancherHypernode, int $timeout = 15 try { $flows = $this->hypernodeClient->logbook->getList($brancherHypernode); $relevantFlows = array_filter($flows, fn(Flow $flow) => $flow->name === 'ensure_app'); - $failedFlows = array_filter($flows, fn(Flow $flow) => $flow->isReverted()); - $completedFlows = array_filter($flows, fn(Flow $flow) => $flow->isComplete()); + $failedFlows = array_filter($relevantFlows, fn(Flow $flow) => $flow->isReverted()); + $completedFlows = array_filter($relevantFlows, fn(Flow $flow) => $flow->isComplete()); if (count($failedFlows) === count($relevantFlows)) { throw new CreateBrancherHypernodeFailedException(); diff --git a/src/DeployRunner.php b/src/DeployRunner.php index e9de6a1..8269e24 100644 --- a/src/DeployRunner.php +++ b/src/DeployRunner.php @@ -291,22 +291,24 @@ private function maybeConfigureBrancherServer(Server $server, bool $reuseBranche $data['labels'] = $labels; if ($reuseBrancher && $brancherApp = $this->brancherHypernodeManager->reuseExistingBrancherHypernode($parentApp, $labels)) { $this->log->info(sprintf('Found existing brancher Hypernode, name is %s.', $brancherApp)); - $server->setHostname(sprintf("%s.hypernode.io", $brancherApp)); } else { $brancherApp = $this->brancherHypernodeManager->createForHypernode($parentApp, $data); $this->log->info(sprintf('Successfully requested brancher Hypernode, name is %s.', $brancherApp)); - $server->setHostname(sprintf("%s.hypernode.io", $brancherApp)); $this->brancherHypernodesRegistered[] = $brancherApp; + } - try { - $this->log->info('Waiting for brancher Hypernode to become available...'); - $this->brancherHypernodeManager->waitForAvailability($brancherApp); - $this->log->info('Brancher Hypernode has become available!'); - } catch (CreateBrancherHypernodeFailedException | TimeoutException $e) { + try { + $this->log->info('Waiting for brancher Hypernode to become available...'); + $this->brancherHypernodeManager->waitForAvailability($brancherApp); + $this->log->info('Brancher Hypernode has become available!'); + } catch (CreateBrancherHypernodeFailedException | TimeoutException $e) { + if (in_array($brancherApp, $this->brancherHypernodesRegistered)) { $this->brancherHypernodeManager->cancel($brancherApp); - throw $e; } + + throw $e; } + $server->setHostname(sprintf("%s.hypernode.io", $brancherApp)); } }