initial commit for a take on having a restful core api, along with an example scripts leveraging the available API calls
This commit is contained in:
parent
44781d0aec
commit
7c6c5edf46
5 changed files with 485 additions and 0 deletions
172
daemon/examples/rest/rest_example.py
Normal file
172
daemon/examples/rest/rest_example.py
Normal file
|
@ -0,0 +1,172 @@
|
|||
import pprint
|
||||
import sys
|
||||
import time
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class CoreRestClient(object):
|
||||
def __init__(self, address):
|
||||
self.base_url = "http://%s" % address
|
||||
|
||||
def _create_url(self, path):
|
||||
return "%s%s" % (self.base_url, path)
|
||||
|
||||
def _delete(self, path, json_data=None):
|
||||
url = self._create_url(path)
|
||||
print "DELETE: %s" % url
|
||||
response = requests.delete(url, json=json_data)
|
||||
response_json = response.json()
|
||||
pprint.pprint(response_json)
|
||||
return response_json
|
||||
|
||||
def _post(self, path, json_data=None):
|
||||
url = self._create_url(path)
|
||||
print "POST: %s" % url
|
||||
response = requests.post(url, json=json_data)
|
||||
response_json = response.json()
|
||||
pprint.pprint(response_json)
|
||||
return response_json
|
||||
|
||||
def _put(self, path, json_data=None):
|
||||
url = self._create_url(path)
|
||||
print "PUT: %s" % url
|
||||
response = requests.put(url, json=json_data)
|
||||
response_json = response.json()
|
||||
pprint.pprint(response_json)
|
||||
return response_json
|
||||
|
||||
def _get(self, path):
|
||||
url = self._create_url(path)
|
||||
print "GET: %s" % url
|
||||
response = requests.get(url)
|
||||
response_json = response.json()
|
||||
pprint.pprint(response_json)
|
||||
return response_json
|
||||
|
||||
def create_session(self):
|
||||
return self._post("/sessions")
|
||||
|
||||
def get_sessions(self):
|
||||
return self._get("/sessions")
|
||||
|
||||
def get_session(self, session_id):
|
||||
return self._get("/sessions/%s" % session_id)
|
||||
|
||||
def delete_session(self, session_id):
|
||||
return self._delete("/sessions/%s" % session_id)
|
||||
|
||||
def set_state(self, session_id, state):
|
||||
return self._put("/sessions/%s/state" % session_id, json_data={"state": state})
|
||||
|
||||
def add_node(self, session_id, options=None):
|
||||
return self._post("/sessions/%s/nodes" % session_id, json_data=options)
|
||||
|
||||
def delete_node(self, session_id, node_id):
|
||||
return self._delete("/sessions/%s/nodes/%s" % (session_id, node_id))
|
||||
|
||||
def get_node(self, session_id, node_id):
|
||||
return self._get("/sessions/%s/nodes/%s" % (session_id, node_id))
|
||||
|
||||
def get_node_links(self, session_id, node_id):
|
||||
return self._get("/sessions/%s/nodes/%s/links" % (session_id, node_id))
|
||||
|
||||
def add_link(self, session_id, link):
|
||||
return self._post("/sessions/%s/links" % session_id, json_data=link)
|
||||
|
||||
def delete_link(self, session_id, link):
|
||||
return self._delete("/sessions/%s/links" % session_id, json_data=link)
|
||||
|
||||
|
||||
def main():
|
||||
address = sys.argv[1]
|
||||
client = CoreRestClient(address)
|
||||
|
||||
# create session
|
||||
create_response = client.create_session()
|
||||
session_id = create_response["id"]
|
||||
|
||||
# query all sessions
|
||||
client.get_sessions()
|
||||
|
||||
# query session
|
||||
client.get_session(session_id)
|
||||
|
||||
# set state to CONFIGURATION
|
||||
client.set_state(session_id, 2)
|
||||
|
||||
# create nodes for small switch networkW
|
||||
node_one_response = client.add_node(session_id)
|
||||
node_one_id = node_one_response["id"]
|
||||
node_two_response = client.add_node(session_id)
|
||||
node_two_id = node_two_response["id"]
|
||||
switch_options = {
|
||||
"type": 4
|
||||
}
|
||||
switch_node_response = client.add_node(session_id, switch_options)
|
||||
switch_id = switch_node_response["id"]
|
||||
|
||||
# link nodes to switch
|
||||
link = {
|
||||
"node_one": node_one_id,
|
||||
"node_two": switch_id,
|
||||
"interface_one": {
|
||||
"id": 0,
|
||||
"ip4": "10.0.0.2",
|
||||
"ip4mask": 16
|
||||
}
|
||||
}
|
||||
client.add_link(session_id, link)
|
||||
link = {
|
||||
"node_one": node_two_id,
|
||||
"node_two": switch_id,
|
||||
"interface_one": {
|
||||
"id": 0,
|
||||
"ip4": "10.0.0.3",
|
||||
"ip4mask": 16
|
||||
}
|
||||
}
|
||||
client.add_link(session_id, link)
|
||||
|
||||
# set state to INSTANTIATION
|
||||
client.set_state(session_id, 3)
|
||||
time.sleep(3)
|
||||
|
||||
# get node information
|
||||
client.get_node(session_id, node_one_id)
|
||||
client.get_node(session_id, node_two_id)
|
||||
client.get_node(session_id, switch_id)
|
||||
|
||||
# get links informations
|
||||
client.get_node_links(session_id, node_one_id)
|
||||
client.get_node_links(session_id, node_two_id)
|
||||
client.get_node_links(session_id, switch_id)
|
||||
|
||||
# delete links
|
||||
delete_link = {
|
||||
"node_one": node_one_id,
|
||||
"node_two": switch_id,
|
||||
"interface_one": 0,
|
||||
}
|
||||
client.delete_link(session_id, delete_link)
|
||||
delete_link = {
|
||||
"node_one": node_two_id,
|
||||
"node_two": switch_id,
|
||||
"interface_one": 0
|
||||
}
|
||||
client.delete_link(session_id, delete_link)
|
||||
|
||||
# delete nodes
|
||||
client.delete_node(session_id, node_one_id)
|
||||
client.delete_node(session_id, node_two_id)
|
||||
client.delete_node(session_id, switch_id)
|
||||
|
||||
# delete session
|
||||
client.delete_session(session_id)
|
||||
|
||||
# query all sessions
|
||||
client.get_sessions()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue