Ignorer les liens de navigation | |
Quitter la vue de l'impression | |
![]() |
Guide RESTful API des systèmes Oracle® ZFS Storage Appliance, version 2013.1.3.0 |
Prise en main de l'API Oracle ZFS Storage Appliance RESTful
Service des problèmes de l'API RESTful
Service des rôles de l'API RESTful
Service de stockage de l'API RESTful
Service utilisateur de l'API RESTful
Obtenir les données d'une ressource
Modifier une ressource existante
Supprimer une ressource existante
Un client d'API RESTful Python est fourni avec une bibliothèque REST test pour vous aider à développer des tests des services RESTful.
Exemple de programme de client 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')]
Le dispositif d'ouverture peut ensuite être utilisé pour ouvrir des demandes pré-authentifiées et prêtes à envoyer/recevoir des données JSON.
Le code Python suivant peut être utilisé pour obtenir des données de n'importe quelle ressource API RESTful.
Exemple 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" } ] }
Exemple de code Python pour la création d'une nouvelle ressource :
>>> 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 } }
Exemple de code Python pour la modification d'une ressource existante :
>>> 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 } }
Exemple de code Python pour la suppression d'une ressource existante :
>>> request = urllib2.Request("https://zfssa:215/api/alert/v1/actions/actions-001") >>> request.get_method = lambda: 'DELETE' >>> response = opener.open(request) >>> response.getcode() 204