码迷,mamicode.com
首页 > 其他好文 > 详细

如何成为以为Openstack贡献者学习笔记(备忘,待整理)

时间:2016-07-13 16:42:21      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

是一篇相对杂乱的笔记,有待整理

如何成为以为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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!