Omitir vínculos de navegación | |
Salir de la Vista de impresión | |
![]() |
Guía de API de RESTful de Oracle® ZFS Storage Appliance, versión 2013.1.3.0 |
Introducción a la API de RESTful de Oracle ZFS Storage Appliance
Servicio de alertas de la API de RESTful
Servicio de problemas de la API de RESTful
Servicio de rol de la API de RESTful
Servicio de SAN de la API de RESTful
Servicio de almacenamiento de la API de RESTful
Servicio de usuario de la API de RESTful
Modificar un recurso existente
Se proporciona un cliente Python de la API de RESTful junto con una biblioteca de prueba de REST para ayudar en el desarrollo de pruebas de los servicios de RESTful.
Ejemplo de programa de cliente RESTful:
>>> import urllib2 >>> import json >>> request = urllib2.Request("https://zfsssa.example:215/api/access/v1", "") >>> request.add_header("X-Auth-User", "rest_user") >>> request.add_header("X-Auth-Key", "letmein") >>> response = urllib2.urlopen(request) >>> response.getcode() 201 >>> info = response.info() >>> opener = urllib2.build_opener(urllib2.HTTPHandler) >>> opener.addheaders = [("X-Auth-Session", info.getheader("X-Auth-Session")), ... ('Content-Type', 'application/json'), ('Accept', 'appplication/json')]
La opción de apertura se puede usar para abrir solicitudes que tienen autenticación previa y están listas para enviar o recibir datos JSON.
Se puede usar el siguiente código de Python para obtener datos de cualquier recurso de la API de RESTful.
Ejemplo de GET:
>>> request = urllib2.Request("https://zfssa:215/api/network/v1/routes") >>> response = opener.open(request) >>> response.getcode() 200 >>> body = json.loads(response.read()) >>> print json.dumps(body, sort_keys=True, indent=4) { "routes": [ { "destination": "0.0.0.0", "family": "IPv4", "gateway": "10.80.231.1", "href": "/api/network/v1/routes/ixgbe0,0.0.0.0,10.80.231.1", "interface": "ixgbe0", "mask": 0, "type": "static" } ] }
Ejemplo de código Python para crear un nuevo recurso:
>>> action = {'category': 'network'} >>> post_data = json.dumps(action) >>> request = urllib2.Request("https://zfssa:215/api/alert/v1/actions", post_data) >>> request.add_header('Content-Type', 'application/json') >>> response = opener.open(request) >>> response.getcode() 201 >>> response.info().getheader('Location') '/api/alert/v1/actions/actions-001' >>> body = json.loads(response.read()) >>> print json.dumps(body, sort_keys=True, indent=4) { "actions": { "category": "network", "datalink_failed": true, "datalink_ok": true, "href": "/api/alert/v1/actions/actions-001", "ip_address_conflict": true, "ip_address_conflict_resolved": true, "ip_interface_degraded": true, "ip_interface_failed": true, "ip_interface_ok": true, "network_port_down": true, "network_port_up": true } }
Ejemplo de código Python para modificar un recurso existente:
>>> put_data = '{"ip_address_conflict_resolved": false}' >>> request = urllib2.Request("https://zfssa:215/api/alert/v1/actions/actions-001", put_data) >>> request.add_header('Content-Type', 'application/json') >>> request.get_method = lambda: 'PUT' >>> response = opener.open(request) >>> response.getcode() 202 >>> body = json.loads(response.read()) >>> print json.dumps(body, sort_keys=True, indent=4) { "actions": { "category": "network", "datalink_failed": true, "datalink_ok": true, "href": "/api/alert/v1/actions/actions-001", "ip_address_conflict": true, "ip_address_conflict_resolved": false, "ip_interface_degraded": true, "ip_interface_failed": true, "ip_interface_ok": true, "network_port_down": true, "network_port_up": true } }
Ejemplo de código Python para suprimir un recurso existente:
>>> request = urllib2.Request("https://zfssa:215/api/alert/v1/actions/actions-001") >>> request.get_method = lambda: 'DELETE' >>> response = opener.open(request) >>> response.getcode() 204