module

Beryl::CLI::ProviderShortcut

Raccourci path-like par ID provider partagé entre beryl rescue et beryl scan (et toute commande future qui cible un serveur encore anonyme).

Pattern : beryl <cmd> aloli/<ID> --provider=<name><ID> est :

  • un entier pour Dedibox (ex: 186260)
  • un UUID v4 pour Scaleway (8-4-4-4-12 hex)

Beryl détecte ce pattern, interroge l'API du provider pour récupérer l'IP publique du serveur, et utilise cette IP comme cible SSH (le reverse DNS temporaire n'est pas nécessaire, le YAML host n'est pas nécessaire).

Constants

INT_RX = /\A\d+\z/
UUID_RX = /\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/i

Class methods

resolve(host_name : String, provider : String, *, ovh_factory : -> OvhApi::Client | Nil = nil, scaleway_factory : -> ScalewayApi::Client | Nil = nil, dedibox_factory : -> DediboxApi::Client | Nil = nil) : Resolved | Nil

Retourne {ip, server_id, zone} si host_name est un ID provider pur et si l'appel API réussit. Retourne nil si le host_name ne correspond pas au pattern attendu pour ce provider. Lève NotFound si le pattern matche mais que l'API ne trouve rien.

La zone est capitale côté Scaleway : sans elle, l'appel reboot qui suit repartirait sur la zone par défaut du shard (fr-par-2) et échouerait en 404 si le serveur est ailleurs (constaté sur chouquette, zone pl-waw-3).

ovh_factory / scaleway_factory / dedibox_factory sont des closures qui retournent un client API (injectables pour les tests).

Source

Nested types