标签:
是一篇相对杂乱的笔记,有待整理
如何成为以为Openstack贡献者
Openstack只是一个技术框架
Openstack基金会
技术委员会 代码管理、质量把握
懂事委员会 决定了Openstack未来发展的方向 铂金会员、黄金会员、个人会员
用户委员会 收集不同的用户对Openstack的需求
开发流程、版本发布管理
开发者、用户、社区生态体系管理
收集用户需求
商标管理
社区事务管理(summit meetup )
法律问题
Openstack贡献者需知
注册 https://launchpad.net
基金会 https://www.openstack.org/join
签署贡献者协议
订阅邮件列表 openstack@lists.openstack.org
openstack-dev@lists.openstack.org/join
Gerrit 开发代码审核工具
https://review.openstack.org
选择唯一的用户名
上传SSH Key
开发流程
Bug管理
https://bugs.launchpad.net
1. 确认新BUG
2. 解决不一致性
3. 信息不全的Bug
4. 检测修复中的BUG
管理新功能
ProjectName-spacs EG. openstack/nova-specs Github
生命周期(先提出功能定义 --> 提交代码 --> 分配开发任务 --> 开发 --> 审批)
有specs的项目跟没有specs的项目不一样。前者更加严格。
注册新功能 --> Buleprint描述功能 --> 设定任务分配者 --> 设定完成时间 --> 审批
Git
设定本地GIT
git config –global user.name “Jmilkfan”
git config –global user.email “fanguiju@jmilkfan.com”
检测:
1. git config –list
2. cat $HOME/.gitconfig
安装Git Review将代码上传到Gerrit(Review system)。
yum install git-review -y
获取Openstack的源代码
git clone https://github.com/openstack/projectName –branch=stable/juno
Openstack开发规范
Openstack代码提交的流程
1. 从库中获取Project的代码到Local –> git clone
2. 生成新的分支
3. 在本地进行unit tests(单元测试) –> git commmit 创建一个提交
4. 将代码提交到Gerrit –> git review
5. 在Gerrit中获得开发者的Review和Check Queue(单元测试之类)
+1
-1 重新修改代码 –> git-commit-amend –>重新提交,并保证实在同一个commit(提交)上的分支
+2 进入 Gate Queue
6. Gate Queue内Jenkins帮助完成完整性测试
7. 功能贡献到Master
开发Openstack的IDE
PyCharm
PyCharm支持VIM模拟器
常用快捷键
优点
跳转功能
集成VIM
界面友好
适合Eclipse习惯的程序员使用
缺点
不方便调试
VIM
快速跳转到其他文件
主题颜色
语法高亮
静态代码分析
自动完成
跳转
Plug-ins
vnndle
YouCompleteMe
Jedi
ctrlp
git clone https://github.com/xiaoquqi/dotfiles
优点
开发效率高
调试便捷
适合分布式系统软件开发
缺点
学习成本高
配置复杂
Devstack - Ubuntu 14.04
快速开始
虚拟化类型
QEMU –> 消耗的资源大
KVM –> 更快
apt-get install git
git clone https://github.com/openstack-dev/devstack
adduser stack
apt-get install sudo -y
echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
sudu su -stack
git clone https://git.opnstack.org/openstack-dev/devstack
cd devstack && ./stack.sh
devstack localrc配置
ADMIN_PASSWORD=fanguiju
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=sadasd-asdasdasd-asdasdasd-asdasdasd #安装Keystone时的临时Token,自己定义
FIXED_RANGE=172.31.1.0/24 #内部管理网络FIXED_IP
FLOATING_RANGE=192.168.20.0/25 #外部Floating_ip
DEST=/opt/stack.kilo #安装路径,默认路径/opt/stack
LOGFILE=$DEST/logs/stack.sh.log #Openstack运行日志路径
VERBOSE=True
SCREEN_LOGODIR=$DEST/logs #Devstack以SCREEN方式运行,当现实内容在SCREEN满了之后会写入log文件
enable_service n-novnc n-cauth #打开两个服务,默认devstack会将不常用的服务关闭
开启Neutron服务
disable_server n-net #关闭Network,跟Neutron冲突
ENABLED_SERVERCES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
ENABLED_SERVICES+=,q-lbaas,q-vpn,q-fwaas
FIXED_RANGE=10.0.0.0/24
HOST_IP=200.21.1.61
FLOATING_RANGE=200.21.50.1/24
PUBLIC_NETWORK_GETWAY=200.21.50.2
Q_FLOATING_ALLOCATION_POOL=start=200.21.50.100,end=200.21.50.150
网卡配置:eth1变成br-ex访问外网的出口。桥接
sudo ovs-vsctl add-port br-ex eth1
检测:
sudo ovs-vsctl show
卸载环境
cd devstack
./unstack.sh
devstack提供的脚本支持
1. 加载环境变量
source openrc [username] [tenantname]
eg. source openrc admin admin
2. exercise.sh 测试环境的完整性,以此执行exercise/下的脚本
怎样使用screen
screen -list 获取screen窗口的列表
screen -x stack 进入到screen的环境
Next:CTRL+a+n
Previous:CTRL+a+p
List:CTRL+a+‘‘
Detach:CTRL+a+d
加速Devstack的安装:
过程:
加载配置文件
安装数据库、消息队列
安装Openstack组件
下载镜像
Openstack必要配置
完成安装并输出结果
安装的资源
devstack/files/apts
更新pip使用国内的源
获取Openstack源代码
使用pip进行requirements安装
下载镜像
如何提高安装的速度
使用国内的镜像服务器
Ubuntu
deb http://mirrors.163.com/ubuntu/ trusty main
在本地构建缓存源
使用regoin-start.sh避免重复安装
Openstack基本架构
Horizon并没有直接连接数据库所有的操作都是通过RESTfulAPI来完成的。
Neutron SDN
Cellometer 监控,通过Queue采集Openstack组个件的信息。
Heat 批量、自动化操作。通过调用个模块的RESTful API来自动化的实现一个任务,例如:创建一个VPN、DB集群。
大多数组件的框架设计都分为API层、服务层
程序入口:使用setupTools console_scripts的方式来实现(好处:在各个操作系统平台上都可以找到合适的脚本程序去执行)
eg. /opt/stack.kilo/nova/setup.cfg
配置文件:
eg. /etc/nova/nova.conf
PEP8测试:
tox -v -epep8 --> 1. virtualenv创建虚拟化环境 2. flake8 指令检测pep8
单元测试:
tox -v -epy27
如何调试Openstack代码
1. Print
2. Debugger
3. Remote Debugger
ipbd tools
支持Tab补全
Git
git commit -a -amend 提交到Gerrit的准备工作。
Rebase(垫底) 和 Merge(合并) 的区别:
如果在Local分支上有修改 但是在Master上的代码被人更早一步的提交并修改了,这是我们无法提交代码,需要先Merge(合并)一下。
Merge:如果Master在我提交之前已经被修改了,可以直接pull将Master修改的部分拉到本地合并,生成一个新的合并提交。那么Mywork就会变成合并之后的模样。
Rebase:如果希望拉下来后,Mywork看起来并没有发生改变的话,可以使用git Rebase,会将mywork里面的commit取消并转换成一些临时的补丁文件,然后将Mywork同步成为Origin的样子,最后再将这些补丁文件应用到Mywork中。这样来实现合并自己的Commit和别人更早提交的代码。那么就可以将Mywoark中的旧的Commint回收掉。
区别:
Merge:直接将Origin和Mywork合并
Rebase:先将Mywork的Commit取消并转换为补丁,再将Origin合并本地,最后Commit的时候将补丁的内容更新到Mywork(此时Mywork已经是Origin的样子了)。
PEP8 Python代码规范
1. 不用Tab,4个空格
2. 每行不超过79字符(最好73个)
3. 类定义和类的第一个函数中间隔两行
4. 类的函数之间要隔一个空行
5. 使用\n换行
6. 较长的行,在空格内换行,不使用\续行符
7. TODO格式为:# TODO(名字) –> TODO 给后续开发人员看代码时要做什么的的提示
8. 导入import时主要排序(系统内建的、外部第三方的、组件代码本身所需要导入的模块(自定义的))都以一空行间隔
文档规范""" Document """
1. 不以空格开头
2. 多行文档,以新行结束
3. 多行文档,之前不包含新行 4.多行文档,第一行为简短描述,空一行,接着是对第一行的详细解析。
缩进规范
1. 如果函数内的参数过长需要换行,要么对齐上一行的,要么缩进8个空格。注意不能与紧挨着的代码块的缩进一致,容易混淆。
Other:
1. 多行赋值语句紧挨时,不以 = 号对齐
2. 普通的算术运算符赋值表达式中,算术运算符以空格与变量和参数隔开
3. 参数内的赋值语句应该不将=号和变量、数值隔开
4. 不以;合并多条 语句
5. :后面不跟语句,应该换行缩进
如何成为以为Openstack贡献者学习笔记(备忘,待整理)
标签:
原文地址:http://blog.csdn.net/jmilk/article/details/51893522