Ir al contenido principal

Pruebas de API de Smarthands

Esta guía proporciona enfoques y ejemplos de pruebas específicas para la API Smarthands de Equinix, basándose en los principios generales de Pruebas de API.

Visión general de la API de Smarthands

La API Smarthands le permite solicitar y gestionar de forma programática diversos servicios de manos remotas en los centros de datos Equinix IBX.\NAquí tiene la correspondencia de la API ECP con los tipos de smarthands admitidos:

Smarthands TypeDescriptionECP API Mapping
Request photos/documentationRequest cage-related photos or documentationhttps://api.equinix.com/v1/orders/smarthands/pictures
SmartHand OtherRequest a Smart Hands order not listed abovehttps://api.equinix.com/v1/orders/smarthands/other
SmartHand Cage Clean upRequest a cage clean uphttps://api.equinix.com/v1/orders/smarthands/cageCleanup
SmartHand Shipment UnpackUnpack inbound shipment and dispose packaginghttps://api.equinix.com/v1/orders/smarthands/shipmentUnpack
SmartHand Cage EscortRequest IBX security escorthttps://api.equinix.com/v1/orders/smarthands/cageEscort
Equipment InstallRequest equipment installationhttps://api.equinix.com/v1/orders/smarthands/equipmentInstall
Request CablesRequest cableshttps://api.equinix.com/v1/orders/smarthands/cableRequest
Locate PackagesRequest package locationhttps://api.equinix.com/v1/orders/smarthands/locatePackage
Run Patch CablesRequest cables run between deviceshttps://api.equinix.com/v1/orders/smarthands/runJumperCable
Patch Cable InstallRequest patch cable installationhttps://api.equinix.com/v1/orders/smarthands/patchCableInstall
Move Patch CableMove patch cables between deviceshttps://api.equinix.com/v1/orders/smarthands/moveJumperCable
Patch Cable RemovalRemove patch cableshttps://api.equinix.com/v1/orders/smarthands/patchCableRemoval
Large SmartHands OrderLarge cable/equipment requestshttps://api.equinix.com/v1/orders/smarthands/largeOrder

Flujo de trabajo de pruebas de Smarthands

Antes de probar la API de Smarthands, asegúrese de que dispone de:

  • Credenciales API válidas con los permisos adecuados
  • Acceso a las ubicaciones IBX de Equinix donde tiene equipos
  • Familiaridad con el flujo de trabajo de los tickets de servicio

Creación de una solicitud de servicio Smarthands

import requests
import json

# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}

auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]

# Test creating a Smarthands request
base_url = "https://api.equinix.com/v1"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

# Example: Create a cage escort request
request_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "AM1",
"cages": [
{
"cage": "AM1:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"AM1:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
},
{
"contactType": "NOTIFICATION",
"userName": "jondoe@test.com"
},
{
"contactType": "TECHNICAL",
"name": "John Doe",
"workPhone": "1111111",
"workPhonePrefToCall": "ANYTIME",
"mobilePhone": "1111111",
"mobilePhonePrefToCall": "ANYTIME"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2017-04-05T12:00:00Z",
"requestedCompletionDate": "2017-04-05T12:00:00Z"
},
"attachments": [
{
"id": "eb9ab7e9-3785-41e4-af24-112dff",
"name": "eb9ab7e9-3785-41e4-af24-asfsa5424"
}
],
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Scope of work",
"supervisionReqForVisitor": false,
"workVisitOrderNumber": "1-108050984499"
}
}

create_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
headers=headers,
data=json.dumps(request_payload)
)

# Verify response
assert create_response.status_code == 201, f"Failed to create request: {create_response.text}"
order_number = create_response.json()["OrderNumber"]

print(f"Successfully created Smarthands request with order number: {order_number}")

Comprobar el estado de la solicitud

# Test retrieving request status
status_response = requests.get(
f"https://api.equinix.com/colocations/v2/orders/{order_number}",
headers=headers
)

assert status_response.status_code == 200, f"Failed to retrieve status: {status_response.text}"
status = status_response.json()["status"]

print(f"Current request status: {status}")

Pruebas de escenarios de error

Pruebe siempre la gestión de errores de su implementación de API:

# Test with invalid location
invalid_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "INVALID", # Invalid IBX code
"cages": [
{
"cage": "INVALID:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"INVALID:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2025-08-01T10:00:00Z",
"requestedCompletionDate": "2025-08-01T12:00:00Z"
},
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Test invalid IBX location",
"supervisionReqForVisitor": false
}
}

error_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
headers=headers,
data=json.dumps(invalid_payload)
)

# Verify error response
assert error_response.status_code == 400, f"Expected error but got: {error_response.status_code}"
assert "Invalid IBX location" in error_response.text, "Error message not as expected"

Mejores prácticas para las pruebas de API de Smarthands

Nota importante: La API de Equinix es un sistema de producción que crea solicitudes de envío reales. Siga siempre estas prácticas recomendadas de prueba para asegurarse de no crear trabajo operativo no intencionado.

  1. Establezca una cuenta dedicada a las pruebas: Si es posible, solicite una cuenta independiente para pruebas
  2. Comience con operaciones de sólo lectura: Pruebe primero los puntos finales GET antes de crear/modificar recursos
  3. Utilice solicitudes de prueba claramente marcadas: Anteponga siempre a las descripciones el prefijo "TEST:" para ayudar a los operadores a identificar las solicitudes de prueba
  4. Limpie los recursos de prueba: Cancele cualquier envío de prueba inmediatamente después de crearlo con éxito
  5. Incluya detalles completos: Proporcione información completa en sus solicitudes
  6. Números de seguimiento: Proporcione siempre números de seguimiento precisos para los envíos entrantes con el fin de garantizar una manipulación adecuada
  7. Información de contacto: Asegúrese de que la información de contacto está actualizada y de que la persona está disponible durante la ventana de servicio programada
  8. Detalles de la descripción: Sea detallado pero conciso al describir los requisitos para ayudar al personal de las instalaciones a completar su solicitud de forma eficiente

Consideraciones sobre automatización

Al construir la automatización en torno a la API de Smarthands:

  • Implemente una gestión de errores y reintentos adecuada
  • Considere la posibilidad de implementar receptores webhook para las actualizaciones de estado
  • Incorpore la validación de ventanas de tiempo y disponibilidad del servicio
  • Incluya un registro de auditoría de todas las interacciones de la API
  • Asegúrese de que la información de seguimiento se incluye automáticamente para todas las solicitudes relacionadas con envíos
  • Validar la disponibilidad de los contactos durante las ventanas de servicio programadas

Recursos adicionales

¿Fue útil esta página?