第1章 OpenStack企业工程师的成长及工作介绍 1
1.1 Horizon界面工程师的工作内容 1
1.2 Neutron网络工程师的工作内容 2
1.3 Nova资深工程师的工作内容 3
1.4本章小结 5
第2章 开发环境的搭建 6
2.1 Windows开发环境的搭建 6
2.1.1 Git的安装 6
2.1.2 JDK的安装与配置 12
2.1.3 Python的安装与配置 15
2.1.4 PyCharm的安装与配置 19
2.2 Linux开发环境的搭建 24
2.2.1 Vim编辑器 24
2.2.2 PyCharm编辑器 25
2.3 Eclipse开发环境的搭建 26
2.3.1安装Eclipse的PyDev插件 26
2.3.2安装Eclipse的EGit插件 26
2.4 Launchpad账号 26
2.4.1 Launchpad账号注册 26
2.4.2上传SSH keys 27
2.4.3补充相关账号与信息 30
2.5 Git的使用 32
2.5.1设置Git全局配置 32
2.5.2安装git-review工具并验证 33
2.5.3提交代码步骤 33
2.5.4 Git管理流程图 35
2.6本章小结 35
第3章 Python语言基础 36
3.1 Python概述 36
3.2 Python基础 37
3.2.1编码 37
3.2.2缩进与分隔 37
3.2.3命名规范 38
3.2.4注释 39
3.2.5执行 39
3.2.6代码的调试 40
3.2.7帮助的使用 41
3.3 Python数据类型 42
3.3.1变量 42
3.3.2数字与表达式 44
3.3.3字符串和列表 45
3.3.4元组 49
3.3.5字典 50
3.3.6其他类型 50
3.4流程控制 51
3.4.1 if语句 51
3.4.2 while循环 52
3.4.3 for循环 53
3.4.4 continue和break 53
3.4.5异常处理 53
3.4.6 else的特殊用法 54
3.5函数 55
3.5.1函数基础 55
3.5.2函数参数 55
3.5.3函数体和返回值 57
3.5.4再论类型和循环 58
3.5.5生成器 60
3.5.6可调用的变量 62
3.5.7变量作用域 63
3.6本章小结 64
第4章 Python模块 65
4.1 SQLAlchemy 65
4.1.1安装SQLAlchemy 65
4.1.2使用SQLAlchemy对数据库操作 65
4.1.3使用ORM 67
4.1.4完整示例 69
4.2 logging模块 70
4.2.1 logging的使用 70
4.2.2若干重要的概念 71
4.2.3 logging工作流程 73
4.2.4日志配置 74
4.3 Eventlet 77
4.3.1 greenlet 77
4.3.2 GreenThread 78
4.4 WSGI 81
4.4.1 RESTful API介绍 81
4.4.2 WSGI简介 82
4.4.3简单的WSGI 83
4.4.4运行WSGI服务 84
4.4.5 Middleware 86
4.5 PasteDeploy 87
4.5.1 PasteDeploy安装 87
4.5.2 Paste配置文件 87
4.5.3改进WSGI 89
4.6 WebOb 90
4.6.1 Python装饰器说明 90
4.6.2简单示例 91
4.6.3添加自己的中间件 91
4.6.4其他特性 92
4.7 routes模块 92
4.7.1 routes模块概述 92
4.7.2使用示例 93
4.8综合实例 94
4.9本章小结 98
第5章 RabbitMQ 99
5.1 RabbitMQ简介 99
5.2 RabbitMQ流程 101
5.2.1单向发送消息 101
5.2.2队列 103
5.2.3交换 106
5.2.4路由 109
5.2.5主题 111
5.2.6 RPC调用 114
5.3 RabbitMQ持久化 119
5.4本章小结 120
第6章 DevStack 121
6.1 DevStack介绍 121
6.2操作系统的安装与配置 121
6.2.1 VMware虚拟机的配置 121
6.2.2系统配置 123
6.3环境准备与配置 126
6.3.1 DevStack准备 126
6.3.2配置local.conf文件 127
6.4安装DevStack 128
6.5环境验证 128
6.5.1登录验证 128
6.5.2创建网络 130
6.5.3创建实例 132
6.5.4验证实例网络 134
6.5.5 OpenStack版本 136
6.6错误分析 136
6.6.1日志目录 136
6.6.2使用Git下载代码出错 137
6.6.3网络配置错误 137
6.6.4重新部署 137
6.7本章小结 138
第7章 开发小试 139
7.1 screen简介 139
7.1.1 screen的进入 139
7.1.2 screen的使用 140
7.1.3 screen的退出 142
7.2 API调试 142
7.2.1 API 142
7.2.2 RESTClient工具 145
7.2.3 Curl实验 151
7.2.4错误分析 155
7.3 OpenStack界面主题的修改 157
7.3.1替换logo 157
7.3.2修改样式 159
7.4本章小结 164
第8章 Django框架 165
8.1安装Django 165
8.2 Dj ango的架构 169
8.3创建项目 170
8.3.1 Django管理工具 171
8.3.2测试站点 172
8.3.3增加一个APP 174
8.4使用数据库 176
8.4.1连接数据库 176
8.4.2创立模型 177
8.4.3显示记录 179
8.5模板 180
8.5.1使用模板 180
8.5.2流程分析 182
8.5.3使用循环 182
8.5.4模板继承 184
8.6表单 185
8.6.1提交表单(GET方法) 185
8.6.2提交表单(POST方法) 186
8.7存储数据 187
8.8表单对象 188
8.9 admin管理 190
8.9.1默认管理 190
8.9.2复杂的模型 191
8.9.3自定义页面 192
8.9.4 Inline显示 193
8.9.5 列表页的显示 194
8.10错误分析 196
8.11本章小结 198
第9章 Dashboard的开发 199
9.1 Dashboard概述 199
9.2源码解析 200
9.2.1 UI整体结构 200
9.2.2初识Dashboard 201
9.2.3项目结构 203
9.3自定义Dashboard和Panel 207
9.3.1手工启动Dashboard工程 207
9.3.2创建Dashboard 207
9.3.3创建mypanel 208
9.3.4编写代码 209
9.3.5验证代码 215
9.4复杂的action table 217
9.4.1定义view 217
9.4.2增加URL 219
9.4.3定义action 220
9.4.4测试 220
9.5 Horizon开发相关内容 222
9.5.1汉化 222
9.5.2 workflows 222
9.5.3 JavaScript 224
9.6错误分析 225
9.7本章小结 227
第10章 Nova组件 228
10.1组件介绍 228
10.1.1 OpenStack的版本 228
10.1.2组件的组成 228
10.1.3组件之间的关系 229
10.1.4 API的使用 230
10.2虚拟创建过程详解 230
10.3 Nova源码分析 233
10.3.1目录结构 233
10.3.2重要目录详解 236
10.4 Nova调用关系分析 240
10.4.1创建虚拟机过程源码追溯 240
10.4.2创建虚拟机过程调用流程函数分析 241
10.4.3 Nova和AMQP的关系 243
10.5开始实践 246
10.6 API V2.1说明 248
10.6.1 compatibility 249
10.6.2 Validation 249
10.6.3 Microversion 249
10.7编码 251
10.7.1示例编码 251
10.7.2官方代码参考 252
10.7.3 Nova代码实现示例 258
10.8调试并修复nova-compute的所有协程卡住的问题 262
10.9本章小结 269
第11章 Neutron组件 270
11.1 Neutron基础 270
11.1.1服务及组件介绍 270
11.1.2 Neutron架构 271
11.1.3 Neutron抽象出的概念 272
11.1.4 Linux网络基础 272
11.2实例网络详解 273
11.2.1硬件配置及网络拓扑 273
11.2.2各个节点服务关系及说明 274
11.2.3场景举例 277
11.3 Neutron的源码分析 282
11.3.1目录结构 283
11.3.2重要目录详解 285
11.3.3 Neutron启动分析 288
11.4 Neutron组件扩展 293
11.4.1编写代码 293
11.4.2重启服务 295
11.4.3测试 296
11.5本章小结 297
第12章 测试技术 298
12.1 OpenStack测试基础 298
12.2单元测试 299
12.3集成测试 301
12.4本章小结 303
附录A Mitaka国内代码贡献 304
附录B Newton新特性 307
附录C Ocata版本新特性 309
附录D Git代码管理命令 314