# Interfaz de Gestión de infraestructura en la nube

La Interfaz de Gestión de Infraestructura en la Nube (CIMI, por sus siglas en inglés) es una especificación de API estándar y abierta para la gestión de infraestructura en la nube.
El objetivo de CIMI es permitir que los usuarios administren la infraestructura de la nube de manera simple, estandarizando las interacciones entre los entornos de la nube para lograr una gestión interoperable de la infraestructura de la nube entre proveedores de servicios y sus consumidores y desarrolladores.
CIMI 1.1 fue registrado como un Estándar Internacional en agosto de 2014 por el Comité Técnico Conjunto 1 (JTC 1) de la Organización Internacional para Estandarización (ISO) y la Comisión Electrotécnica Internacional (IEC).

## Descripción general

El estándar CIMI está definido y publicado por Grupo de Trabajo de Gestión Distribuida (DMTF, por sus siglas en inglés).. Incluye la especificación del Modelo y Protocolo RESTful basado en HTTP de la Interfaz de Gestión de Infraestructura en la Nube (CIMI), el esquema XML de CIMI, el manual básico de CIMI y el documento técnico de casos de uso de CIMI :
* Modelo de interfaz de gestión de infraestructura en la nube (CIMI) y protocolo basado en HTTP RESTful
    El modelo de interfaz de gestión de infraestructura en la nube (CIMI) y la especificación de protocolo basado en HTTP RESTful definen la arquitectura y los conceptos de CIMI.
* Esquema XML CIMI
    El esquema XML de CIMI define la representación XML del modelo CIMI.
* Manual Básico de CIMI
    El Manual de CIMI explica cómo los clientes pueden usar la API de CIMI para algunos casos de uso comunes, como enumerar imágenes y configuraciones de máquinas, crear una máquina a partir de una plantilla y luego recuperar detalles sobre ella.
* Casos de uso de CIMI
    El documento técnico Casos de uso de CIMI recopila una serie de casos de uso que tipifican la próxima generación de problemas que enfrentan los proveedores de IaaS y que se considera que se abordarán en la próxima versión de la especificación de CIMI, como Continuidad empresarial/Recuperación ante desastres, Gestión de objetivos de nivel de servicio, Gestión de registros/metadatos y Gestión Multinube.

## Objetivos

CIMI tiene como objetivo proporcionar un único conjunto de interfaces que un consumidor en la nube puede utilizar para proveer y gestionar su infraestructura en la nube en múltiples nubes, por lo que el código del cliente no necesita ser adaptado a cada una de las interfaces propietarias de estos múltiples proveedores. El CIMI se ha descrito como un estándar de jure que está bajo el control del cambio de un cuerpo de normas, contrastándolo con un estándar de facto en el que normalmente un proveedor tiene un control de cambio sobre la interfaz, y todos los demás tienen que cambiar el funcionamiento interno de la misma. Se espera que los proveedores adopten una estrategia dual de ofrecer dos opciones: una oferta compatible con el CIMI y la segunda una oferta más patentada que permita una funcionalidad más patentada.

## Ámbito de aplicación

CIMI está ajustado a la funcionalidad básica de IaaS, tales como el despliegue y la gestión de Máquinas, Volúmenes, Redes, Monitoreo y Sistemas que los agrupan. Incluye un mecanismo de descubrimiento de características para averiguar qué funciones soporta el proveedor de la nube, incluyendo los metadatos que describen capacidades y restricciones de recursos.

## Modelo y Características
### Modelo

El modelo CIMI describe en detalle todos los recursos a los que puede acceder el consumidor de la nube y que son mantenidos por el proveedor de la nube, y sus relaciones.
El principal punto de entrada para el consumidor CIMI es el Punto de Entrada en la Nube del Proveedor de IaaS. Todos los demás datos se descubren, iterativamente:
* Punteros a Máquinas, Volúmenes, Redes, Sistemas (una agrupación de recursos administrados como una sola unidad), Imágenes de Máquina, Credenciales, . . .
* Plantillas para provisionar nuevos recursos como Máquinas, Volúmenes, Redes y Sistemas
* Recursos de monitoreo como Medidores, Eventos y Registros de eventos (para notificaciones del Proveedor, con tiempo, tipo (error, advertencia, ...), gravedad, etc. )
* Trabajos (uno o más procesos o acciones dirigidos a lograr un objetivo específico, realizados por el Proveedor)
* Metadatos que describen capacidades y limitaciones de recursos
* Extensiones de proveedor opcionales
El modelo es auto descriptivo y permite consultar sus propios metadatos, por ejemplo, para descubrir qué extensiones se han implementadas. El modelo también es extensible por el consumidor y el proveedor.
El modelo también define serializaciones tanto en XML como en JSON para cada recurso.

### Características

CIMI aborda la gestión del ciclo de vida de la infraestructura proporcionada por un proveedor de IaaS, como la creación, eliminación, visualización y alteración de máquinas virtuales, redes y almacenamiento, y operaciones de inicio y detención. También define operaciones de recursos, como la creación de imágenes de máquinas o instantáneas de máquinas para copia de seguridad y restauración, o para la creación de máquinas virtuales idénticas adicionales.
CIMI permite la importación de un paquete OVF para crear un Sistema con Máquinas y otros recursos CIMI, así como la exportación de un Sistema CIMI de recursos a un paquete OVF. La importación y exportación reales de paquetes OVF son manejadas por el hipervisor subyacente bajo la administración de la implementación de CIMI.

## Protocolos

Actualmente, CIMI admite el estilo arquitectónico REST mediante HTTP para todas las interacciones entre el consumidor y los proveedores. También se consideran asignaciones a SOAP y WS-MAN .
Este vínculo de protocolo sigue los principios REST y describe la asignación de verbos de protocolo HTTP a operaciones en el modelo: cada solicitud se envía mediante un verbo HTTP como GET, POST, PUT y DELETE, e incluye un cuerpo de mensaje en formato JSON o XML. . Cada respuesta utiliza un código de estado HTTP estándar, cuya semántica se interpreta en el contexto de la solicitud particular que se realizó.

## Implementaciones

Se han desarrollado varios adaptadores que exponen un extremo de la API de CIMI para que las aplicaciones de los clientes consuman y traduzcan las llamadas de API a las llamadas de API patentadas de los proveedores admitidos de la nube de destino.
La siguiente es una lista de implementaciones de CIMI:
* Nube Delta de Apache
* Proyecto OW2 Siroco
* Proyecto StratusLab
* Interfaz CIMI para OpenStack
El grupo de trabajo de CIMI ha anunciado plug-fests para mejorar la interoperabilidad entre las implementaciones de CIMI.