OpenDayLight 氫版本 RestAPI 呼叫例項(2)-主機資訊獲取(Python)

胡大炮的妖孽人生發表於2016-11-17

本篇博文主要介紹在已經完成搭建OpenDayLight的系統上使用Python3呼叫Rest Api來獲取網路中的主機資訊。

要點

1.本專案採用了httplib2的庫進行的Http的請求功能

2.採用了Basic Auth的方式進行的使用者認證

當前已經完成程式碼如下:目前已經完成了網路的拓撲結構的獲取以及主機的資訊的獲取

程式碼如下:

import httplib2

class OdlUtil:
    url = ''
    def __init__(self, host, port):
        self.url = 'http://' + host + ':' + str(port)
    '''
    得到網路中的拓撲資訊
    '''
    def get_topology(self, container_name='default', username="admin", password="admin"):
        http = httplib2.Http()
        http.add_credentials(name=username, password=password)
        headers = {'Accept': 'application/json'}
        response, content = http.request(uri=self.url + '/controller/nb/v2/topology/' + str(container_name), headers=headers)
        return content.decode()
    '''
    得到網路中的節點資訊
    '''
    def get_hosts(self, address,container_name='default', username="admin", password="admin"):
        http = httplib2.Http()
        http.add_credentials(name=username, password=password)
        headers = {'Accept': 'application/json'}
        response, content = http.request(uri=self.url + "/controller/nb/v2/hosttracker/" + str(container_name) + "/address/" + str(address),
                                         headers=headers)
        return content.decode()

呼叫方式(引數為需要獲取主機的IP地址,可選引數為使用者名稱與密碼)

odl = OdlUtil('127.0.0.1', '8080')
result = odl.get_hosts("10.0.0.2")
print(result)

返回結果

{“dataLayerAddress”:”00:00:00:00:00:02”,”nodeType”:”OF”,”nodeId”:”00:00:00:00:00:00:00:02”,”nodeConnectorType”:”OF”,”nodeConnectorId”:”3”,”vlan”:”0”,”staticHost”:false,”networkAddress”:”10.0.0.2”}

相關文章