Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
ferwe
Frequent Visitor

Obtenga máquinas virtuales de VCenter a través de la API

Hola

Intento obtener una lista de máquinas virtuales de VMWare VCenter.

Necesito un ID de sesión para conectarme. Si ya tengo el ID de sesión generado, puedo conectarme.

Tengo un fragmento de código para obtener el ID primero, pero no puedo hacer que funcione.

¿Alguna sugerencia?

Dejar
MyToken - let
cuerpo: Text.ToBinary(""),
url "https://vcenter.url/rest/com/vmware/cis/session",

opciones [
Encabezados de tipo de contenido"""application/json"],
Contenido-cuerpo
],
resultado: Web.Contents(url, options),
"Convertido según la tabla" - Xml.Tables(result,null,65001),
access_token "Converted to Table"{0}[SessionToken]
En
access_token,
Fuente: Json.Document(Web.Contents("https://vcenter.url/rest/vcenter/vm", [Headers-[-"vmware-api-session-id"-"MyToken", Accept-"application/json"]])),
valor: Fuente[valor],
"Converted to Table" á Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Columna Expandada1" á Table.ExpandRecordColumn(?"Converted to Table", "Column1", "memory_size_MiB", "vm", "name", "power_state", "cpu_count", "Column1.memory_size_MiB", "Column1.vm", "Column1.name", "Column1.power_state", "Column1.cpu_count"-)
En
"Columna expandida1"

5 REPLIES 5
ferwe
Frequent Visitor

Encontré la solución.

Para todos los que necesitan obtener datos vm de la API de VCenter.

Dejar
MyToken - let
cuerpo: Text.ToBinary(""),
url - "https://%VCenter%/rest/com/vmware/cis/session",
opciones [
Encabezados ?
["Content-type" ?"application/json",
Autorización"Basic %BASE64 contraseñade nombre de usuario codificado% ",
Aceptar "application/json"
],
Contenido-cuerpo
],
resultado: Json.Document(Web.Contents(url, options)),
"Convertido a tabla" - Record.ToTable(result),
"Columnas eliminadas" ? Tabla.RemoveColumns("Converted to Table","Name"-),
Valor de "Columnas eliminadas"{0}[Valor]
En
Valor
Fuente: Json.Document(Web.Contents("https://%VCenter%/rest/vcenter/vm", [Headers-[-"vmware-api-session-id"-MyToken, Accept-"application/json"]])),
valor: Fuente[valor],
"Converted to Table" á Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Columna Expandada1" á Table.ExpandRecordColumn(?"Converted to Table", "Column1", "memory_size_MiB", "vm", "name", "power_state", "cpu_count", "Column1.memory_size_MiB", "Column1.vm", "Column1.name", "Column1.power_state", "Column1.cpu_count"-)
En
"Columna expandida1"

Soy bastante nuevo en PowerBi y PowerBi Desktop, ¿podría explicar un poco cómo se debe implementar esto? ¿El texto que envió es el contenido de una consulta en blanco? ¿Cómo se administran las variables o parámetros %VCenter% y las credenciales? ¿Podría funcionar esto con una puerta de enlace de datos local para conectarse a un vCenter local?

¡Gracias de antemano por los consejos!

Óscar

v-xicai
Community Support
Community Support

Hola @ferwe ,

Puede consultar los enlaces de la siguiente manera:

API REST de Power BI

¿Qué pueden hacer los desarrolladores con la API de Power BI?

Extraiga los datos de la API REST de VMWare vCenter

Saludos

Amy

Equipo de Apoyo Comunitario _ Amy

Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

ferwe
Frequent Visitor

Hola @v-xicai

Gracias por su respuesta.

Los dos primeros mensajes son sobre la API de power bi.

Pero necesito una solución para conectarme a la API de vmware.

El tercer post fue el primero que encontré y esto se trata de un problema con el certificado ssl.

Mi problema real es diferente.

Quiero obtener el "id de sesión" de vmware.

Esto se puede hacer con una solicitud de publicación y "autenticación básica" contra la url "https://%vcenter%/rest/com/vmware/cis/session"

Puedo hacer esto con el cartero y Powershell también.

Pero con Power BI sólo tengo "404 página no encontrada"

Estoy bastante seguro de que la autenticación no funciona. Pero desafortunadamente no sé cómo configurar la autenticación dentro del comando "Web.Contents" para una autenticación correcta.

Lo que sé:

1. Necesito un Post reques para obtener el ID de sesión.

2. Para hacer una solicitud de publicación necesito agregar la variable "contenido" como se describe en este enlace

3. Si agrego "contenido" a la parte "web.contents", tengo que usar la autenticación "anónima" para la fuente de datos

Así que mi problema ahora. Cómo autenticar contra el API con la autenticación básica dentro de la petición.

Refiriéndose a este enlace i debe usarlo esto fue:

Dejar
respuesta: Web.Contents("https://%vcenter%/rest/com/vmware/cis/session",

[Headers-[Authorization-"Basic %encoded username password%", content-""" ]])

En
Respuesta

Pero esto no funciona.

Pregunta final.

¿Cómo enviar una solicitud de "publicación" con autenticación básica y sin contenido dentro del elemento web.contents?

O con otras palabras.

¿Alguien tiene un ejemplo de código para que PowerBI se conecte a la API de VCenter?

saludos

ferwe
Frequent Visitor

Hola @v-xicai

Gracias por su respuesta.

Los dos primeros mensajes son sobre la API de power bi.

Pero necesito una solución para conectarme a la API de vmware.

El tercer post fue el primero que encontré y esto se trata de un problema con el certificado ssl.

Mi problema real es diferente.

Quiero obtener el "id de sesión" de vmware.

Esto se puede hacer con una solicitud de publicación y "autenticación básica" contra la url "https://%vcenter%/rest/com/vmware/cis/session"

Puedo hacer esto con el cartero y Powershell también.

Pero con Power BI sólo tengo "404 página no encontrada"

Estoy bastante seguro de que la autenticación no funciona. Pero desafortunadamente no sé cómo configurar la autenticación dentro del comando "Web.Contents" para una autenticación correcta.

Lo que sé:

1. Necesito un Post reques para obtener el ID de sesión.

2. Para hacer una solicitud de publicación necesito agregar la variable "contenido" como se describe en este enlace

3. Si agrego "contenido" a la parte "web.contents", tengo que usar la autenticación "anónima" para la fuente de datos

Así que mi problema ahora. Cómo autenticar contra el API con la autenticación básica dentro de la petición.

Refiriéndose a este enlace i debe usarlo esto fue:

Dejar
respuesta: Web.Contents("https://%vcenter%/rest/com/vmware/cis/session",

[Headers-[Authorization-"Basic %encoded username password%", content-""" ]])

En
Respuesta

Pero esto no funciona.

Pregunta final.

¿Cómo enviar una solicitud de "publicación" con autenticación básica y sin contenido dentro del elemento web.contents?

O con otras palabras.

¿Alguien tiene un ejemplo de código para que PowerBI se conecte a la API de VCenter?

saludos

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors