Python,APIs y CLIs
Published: 2023-07-23 13:15:03


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/746xkagpjlr2gy17ikvn.jpg)
# Intro
  Resulta que nuestro proveedor habitual de 'servicio de nombres en Internet'  y Hosting ofrece (como la mayoría, entre los de calidad) una herramienta de consola o terminal. Tipo línea de comandos ( CLI - Command Line Interface )

  Pues bien, anotamos acá las notas de instalación de dicho CLI, pues la [documentación oficial contiene](https://github.com/gandi/gandi.cli) una errata (que nos ha hecho dar más de unas cuantas vueltas en ocasiones... ). Sirva esta nota técnica para recordatorio futuro.



Una vez satisfechas las dependencias necesarias, en nuestro sistema operativo ( GNU + Linux ) :

- Python 2.7/3.4/3.5/3.6/3.7
- openssl
- openssh
- git

 Además de el entorno Python 

- pip
- virtualenv


Simplemente realizamos :

```
$ virtualenv /mi/directorio/gandi.cli
$ source /mi/directorio/gandi.cli/bin/activate
$ cd /mi/directorio/gandi.cli			// <-- esta es la errata \!/ pues la doc oficial omite este paso --
$ pip install gandi.cli
```

Voilà

```
$ gandi 
Usage: gandi [OPTIONS] COMMAND [ARGS]...

  Gandi command line utility.

  All CLI commands have a documented help

  $ gandi <command> --help

Options:
  -v         Enable or disable verbose mode. Use multiple time for
             higher level of verbosity: -v, -vv

  --version  Display version.
  --help     Show this message and exit.

Commands:
  account info
  api
  certificate change-dcv
  certificate create
  certificate delete
  certificate export
  certificate follow
  certificate info
  certificate list
  certificate packages
  certificate plans
  certificate resend-dcv
  certificate update
  certstore create
  certstore delete
  certstore info
  certstore list
  config delete
  config edit
  config get
  config list
  config set
  contact create
  datacenters
  deploy
  disk attach
  disk create
  disk delete
  disk detach
  disk info
  disk list
  disk migrate
  disk rollback
  disk snapshot
  disk update
  dns create
  dns delete
  dns domain.list
  dns keys create
  dns keys delete
  dns keys info
  dns keys list
  dns keys recover
  dns list
  dns update
  dnssec create
  dnssec delete
  dnssec list
  docker
  domain create
  domain info
  domain list
  domain renew
  forward create
  forward delete
  forward list
  forward update
  help
  ip attach
  ip create
  ip delete
  ip detach
  ip info
  ip list
  ip update
  mail create
  mail delete
  mail info
  mail list
  mail purge
  mail update
  oper info
  oper list
  paas attach
  paas clone
  paas console
  paas create
  paas delete
  paas info
  paas list
  paas restart
  paas types
  paas update
  record create
  record delete
  record list
  record update
  setup
  snapshotprofile info
  snapshotprofile list
  sshkey create
  sshkey delete
  sshkey info
  sshkey list
  status
  vhost create
  vhost delete
  vhost info
  vhost list
  vhost update
  vlan create
  vlan delete
  vlan info
  vlan list
  vlan update
  vm console
  vm create
  vm delete
  vm images
  vm info
  vm kernels
  vm list
  vm migrate
  vm reboot
  vm ssh
  vm start
  vm stop
  vm update
 ...

```
nos permite ahora administrar cómodamente nuestros recursos (DNS, SSLs, HW --- máquinas privada virtuales, VPS y demás ) cómodadmente, como más nos gusta : desde la consola/terminal - Ba$h de nuestro sistema operativo a través de su API y el CLI hecho en Python.

En Internet, más y más ... todo es una API ?