class

OvhApi::Endpoints::DedicatedServers

Inherits Reference < Object

Endpoints /dedicated/server et /dedicated/installationTemplate.

Les serveurs sont identifiés par leur serviceName (ex. ns1234.ip-1-2-3.eu). L'installation est déclenchée par un POST qui renvoie un Task dont on suit l'avancement via /dedicated/server/{serviceName}/task/{taskId}.

Constructors

new(client : OvhApi::Client)
Source

Instance methods

boot(service_name : String, boot_id : Int64) : Boot

Détail d'un bootId (type, kernel, description, supportsUEFI).

GET /dedicated/server/{serviceName}/boot/{bootId}.

Source
boot_from_disk(service_name : String) : Task

Orchestration inverse de prepare_rescue : bascule le netboot courant vers le profil harddisk et reboot. À utiliser après une install réussie pour que le serveur redémarre sur l'OS qu'on vient de poser sur le disque, et non en rescue.

Retourne la Task du reboot (function hardReboot côté OVH).

Source
boots(service_name : String) : Array(Int64)

Liste les bootId disponibles pour un serveur.

GET /dedicated/server/{serviceName}/boot → tableau d'entiers. Chaque bootId pointe vers un profil de netboot (harddisk, rescue64-pro, ipxeCustomerScript, etc.), dont le détail est lu via #boot(service_name, boot_id).

Source
info(service_name : String) : JSON::Any

Détail d'un serveur (facturation, reverse, état, rack).

GET /dedicated/server/{serviceName}.

Source
installation_template(template_name : String) : JSON::Any

Détail d'un template d'installation.

GET /dedicated/installationTemplate/{templateName}.

Source
installation_templates

Liste les templates d'installation disponibles (OS standards OVH : Debian, Ubuntu, Rocky, FreeBSD si proposé par la gamme).

GET /dedicated/installationTemplate → liste de slugs comme "debian12_64", "ubuntu2404-server_64", "freebsd14.1-zfs_64".

Retourne des String (identifiants) ; pour le détail d'un template, appeler installation_template/{id} via #call directement.

Source
ips(service_name : String) : Array(String)

Liste les IPs (v4 + v6) affectées au serveur, au format bloc CIDR. Exemple : ["51.83.6.123/32", "2001:41d0:2:6e01::/64"].

GET /dedicated/server/{serviceName}/ips.

Source
list

Liste les serviceName des serveurs dédiés du compte.

GET /dedicated/server.

Source
prepare_rescue(service_name : String, ssh_key_name : String) : Task

Orchestration complète « bascule en rescue + clé SSH + reboot ».

Enchaîne :

. boots puis boot(id) pour trouver le bootId rescue adapté. Critère : bootType == "rescue" et supportsUEFI vaut "yes", "both", "only" ou est absent. S'il y a plusieurs candidats, on retient le premier (les gammes récentes n'en exposent qu'un). . ssh_keys.get(ssh_key_name) pour résoudre le contenu de la clé publique. La doc OVH parle d'un « nom » pour rescueSshKey mais l'API attend en réalité la clé brute (observé en v0.2.1 sur un Kimsufi KS-B : {"message":"SSH key is not valid"} en retour quand on passait le nom). . set_boot(service_name, rescue_id, rescue_ssh_key: <contenu>) pour armer le netboot rescue et déclarer la clé à injecter en une seule requête PUT /dedicated/server/{serviceName}. . reboot(service_name) pour appliquer.

ssh_key_name doit déjà exister dans /me/sshKey (à créer via client.ssh_keys.create si besoin).

Retourne la Task du reboot ; à poller avec #task.

Source
reboot(service_name : String) : Task

Déclenche un redémarrage matériel du serveur.

POST /dedicated/server/{serviceName}/reboot → retourne une Task (function "hardReboot" côté OVH). Le reboot applique le netboot courant ; configurer set_boot (avec rescue_ssh_key si nécessaire) avant d'appeler cette méthode.

Source
reinstall(service_name : String, template : String, hostname : String | Nil = nil, ssh_key_name : String | Nil = nil, extra : Hash(String, String) | Nil = nil) : Task

Déclenche une réinstallation du serveur.

Utilise l'endpoint moderne POST /dedicated/server/{serviceName}/reinstall (schéma d'API 2024+). Les paramètres OVH récents :

  • operatingSystem : slug du template (obligatoire).
  • customizations : bloc optionnel (hostname, sshKey, postInstallScript…).
  • storage : partitionnement (laisse OVH décider si nil).

Retourne un Task dont l'id sert à interroger l'avancement.

Source
service_id_for(service_name : String) : Int64

Retourne le serviceId (long) d'un serveur dédié à partir de son serviceName (ex: ns3156789.ip-51-83-6.eu). Passe par GET /dedicated/server/{serviceName}/serviceInfos qui est la source canonique côté OVH pour cette correspondance.

Source
set_boot(service_name : String, boot_id : Int64, rescue_ssh_key : String | Nil = nil, rescue_mail : String | Nil = nil) : Nil

Change le netboot courant du serveur et configure optionnellement les options rescue (clé SSH, email de notification).

PUT /dedicated/server/{serviceName} avec body JSON contenant bootId et, si fournis, rescueSshKey et/ou rescueMail. OVH répond avec un corps vide en cas de succès.

rescue_ssh_key est le nom d'une clé SSH déclarée dans /me/sshKey (voir client.ssh_keys.list). Elle sera injectée dans /root/.ssh/authorized_keys au démarrage du rescue.

Source
task(service_name : String, task_id : Int64 | Int32) : Task

Détail d'une tâche.

GET /dedicated/server/{serviceName}/task/{taskId}.

Source
tasks(service_name : String, function : String | Nil = nil, status : String | Nil = nil) : Array(Int64)

Liste les identifiants de tâche associés à un serveur.

GET /dedicated/server/{serviceName}/task. Un filtre function (ex. "reinstallServer") et/ou status ("todo", "doing", "done", "ovhError", "customerError", "cancelled") peuvent être passés en query.

Source
update(service_name : String, display_name : String | Nil = nil) : Nil

Modifie le displayName d'un serveur dédié (nom personnalisé visible dans le panel OVH). Le name technique nsXXXXX.ip-A-B-C.tld n'est pas modifiable.

Côté API, le displayName ne vit PAS sur /dedicated/server/{X} (OVH a retiré ce champ : PUT renvoie 400 « Some properties does not exist: displayName »). Il vit sur /services/{serviceId} (API transverse à tous les services OVH, schéma services.update.Service). On fait donc un flux à deux étapes :

  1. GET /dedicated/server/{serviceName}/serviceInfos → serviceId (long)
  2. PUT /services/{serviceId} body: {displayName: "..."}

Découvert terrain 23 avril 2026 sur loulou : HTTP 400 : "Some properties does not exist: displayName"

Source
wait_for_task(service_name : String, task_id : Int64 | Int32, interval : Time::Span = 30.seconds, timeout : Time::Span = 1.hour, & : Task -> ) : Task

Polle task(...) jusqu'à un état terminal (done? vrai). Retourne la Task finale ; lève OvhApi::TaskTimeout si timeout est dépassé avant que l'état ne soit terminal.

Utilisé après reinstall, prepare_rescue, boot_from_disk, reboot pour se passer de la boucle loop do … sleep côté appelant. Une form do |task| … end est fournie pour tracer l'avancement à chaque tour (utile pour logger task.status / task.last_update).

task = client.dedicated_servers.reinstall(...)
final = client.dedicated_servers.wait_for_task(
  service_name: "ns1.ip-1-2-3.eu",
  task_id: task.id,
) { |t| Log.info { "Task #{t.id} : #{t.status}" } }
raise "échec install" if final.failed?
Source
wait_for_task(service_name : String, task_id : Int64 | Int32, interval : Time::Span = 30.seconds, timeout : Time::Span = 1.hour) : Task

Polle task(...) jusqu'à un état terminal (done? vrai). Retourne la Task finale ; lève OvhApi::TaskTimeout si timeout est dépassé avant que l'état ne soit terminal.

Utilisé après reinstall, prepare_rescue, boot_from_disk, reboot pour se passer de la boucle loop do … sleep côté appelant. Une form do |task| … end est fournie pour tracer l'avancement à chaque tour (utile pour logger task.status / task.last_update).

task = client.dedicated_servers.reinstall(...)
final = client.dedicated_servers.wait_for_task(
  service_name: "ns1.ip-1-2-3.eu",
  task_id: task.id,
) { |t| Log.info { "Task #{t.id} : #{t.status}" } }
raise "échec install" if final.failed?
Source