实验 7:OpenDaylight 实验——Python 中的 REST API 调用
一、实验目的
对 Python 调用 OpenDaylight 的 REST API 方法有初步了解
二、实验任务
本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序调用 OpenDaylight 的北向接口下发关于硬超时的流表,实现拓扑内主机在一定时间内的网络通断。
三、实验步骤
1. 实验环境
安装了 Ubuntu 16.04.5 Desktop amd64 的虚拟机
2. 实验过程
(1)生成拓扑
$ sudo mn --topo=single,3 --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
生成拓扑之后发现 ping 失败
解决办法:要在 OpenDaylight 启动之后再生成拓扑
(2)编写 Python 代码和 JSON 格式的请求内容
$ nano odlnorth.py
$ nano hardtimeout.json
(3)运行 Python 代码,完成流表下发
运行 odlnorth.pu
报错
解决办法:没有安装 requests
库,执行以下安装
$ sudo apt-get install python-pip //如果 pip 没装的话需要运行
$ sudo pip install requests
安装 pip 中报错
解决办法:查询了一些资料之后发现可能是之前的 apt 命令没有执行完成就被关掉了。开启 root 权限,执行以下两条命令强制解锁
(我没有用 root 权限也试过,结果仍让报错)
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
执行完后再次执行安装 pip 命令
成功了,但是安装的速度非常非常慢,基本不动。于是我又去查询资料看看能不能安装的快点。
解决办法:可以通过更新 apt-get 的源来解决这个问题。具体的步骤可以参考以下这篇博客。
https://blog.csdn.net/gxz987/article/details/98185262
可以发现更新完之后的速度非常快。
解决了前面的问题之后,启动 OpenDaylight,建立拓扑,运行 odlnorth.py。
实验结果与预期一致。
四、总结
这次实验整体上并不难,有实验六的基础做起来很快。唯一让我比较困扰的就是中间 pip 安装出现的两次问题,好在都顺利解决了。