开发环境搭建
python环境设置
- 安装pip,具体方式google
- 安装VCForPython27,用于编译c语言
- 由于网络原因无法从外网pip源下载三方包,需要将pip源设置为华为内源。
- 在个人目录(C:\Users\x00250203\pip)创建pip目录,添加pip.ini文件
- 将文件内容设置为:
[global] index-url=http://rnd-mirrors.huawei.com/pypi/simple/ [install] trusted-host=rnd-mirrors.huawei.com
- 从requirments安装三方包,进入karbor/src/karbor, 编辑requirements.txt,由于内部源软件缺少新版本,需要降低版本需求或直接注释掉版本需求,然后执行
pip install -r requirments.txt
- mock kmc,进入python的site-packages目录,创建kmc目录和init.py将,将kmc.py拷贝到kmc目录
- 如果运行过程中报
cannot import module xxx
,直接使用pip install xxx
安装即可,特殊说明:openstack client xxxclient需要安装python-xxxclient。
pycharm设置
- 换行符设置为LF(Linux格式):
File
-->Keymap
-->Main menu
-->File
-->Line Separators
-->LF
- 编码格式设置为UTF-8,python头文件添加
code: utf-8
- 设置单行文件最大79字符(PEP8规范):
File
-->Setting
-->Editor
-->Code Style
-->Right margin
- pycharm导入工程强烈建议不要把整个代码目录导入进来,导入karbor和kangaroo两个工程即可,并设置依赖。
git设置
- 设置不把LF转化成CRLF(默认会转):
git config --global core.autocrlf false
- 设置ignore文件:
git config --global core.excludesfile '~/.gitignore'
- 设置中文不乱码:
git config --global core.quotepath false
rabbitmq搭建
- rabbitmq是erlang编写,首先需要下载安装erlang,codeclub下载
- 安装windows版rabbitmq,codeclub下载
- 双击
rabbitmq-service.bat
运行rabbitmq
mysql环境搭建
由于原生postgres不支持bool值和integer值转换,导致无法使用postgres数据库进行调试。mysql下载 codeclub下载
安装Python的mysql驱动pip install mysql-connector==2.1.6
(高版本有BUG)
设置外键不检查:SET GLOBAL FOREIGN_KEY_CHECKS=0;
openssl搭建
token的解密会用到openssl相关命令,因为需要在本地安装openssl,下载地址
python运行设置
openstack本身是运行在linux上的,如果需要运行在windows上需要做如下适配:
修改
site-packages\keystonemiddleware\auth_token\__init__.py
文件里的_cms_verify
函数里的verify
函数如下:from kangaroo.tests.debug import token verified_data = token.verify(data) if not verified_data: raise ksc_exceptions.CertificateConfigError("fake") return verified_data
修改
site-packages\keystonemiddleware\auth_token\_signing_dir.py
文件里的_verify_signing_dir
函数,在第一句if os.path.isdir(self._directory_name): return 0
(新增),否则修改文件失败。修改
site-packages\eventlet\greenio\base.py
文件里的set_nonblocking
函数, 在except AttributeError
的注释后加return修改
site-packages\keystonemiddleware\auth_token\__init__.py
文件里的_validate_offline
函数,给语句self._revocations.check(token_hashes)
之前加判断条件if self._check_revocations_for_cached:
修改
site-packages\keystoneauth1\identity\base.py
文件里的get_endpoint_data函数,把if interface is plugin.AUTH_INTERFACE:
修改为if True or interface is plugin.AUTH_INTERFACE:
修改
kangaroo\src\kangaroo\etc\debug\karbor.conf
文件的[keystone_authtoken] insecure = true
;修改
kangaroo\src\kangaroo\etc\debug\api_paste.ini
文件里[filter:authtoken] signing_dir = D:\runtime\keystone-signing\
修改
karbor\src\karbor\karbor\utils.py
里的find_config
函数,在possible_locations
数组里加一条os.path.join("etc\\debug", config_path)
本地运行karbor(openstack)
如果想深入研究openstack wsgi框架,oslo相关类库,本地调试是最好的手段,具体步骤如下。
生成entry_point 拷贝
/kangaroo/src/kangaroo/build
下文件到Karbor根目录karbor/src/karbor
中,分别进入到karbor/src/karbor
和/kangaroo/src/kangaroo
根目录,执行python setup.py egg_info
生成Karbor和Kangaroo的entry_point。拷贝
/kangaroo/src/kangaroo/karbor_extend
目录下文件到karbor目录karbor\src\karbor\karbor
中,覆盖karbor原生代码应用Karbor补丁 利用git bash进入CSBS根目录,执行
git apply kangaroo/src/kangaroo/patches/*
生成Karbor数据库
本地登录mysql,新建数据库,取名为karbor
编辑
kangaroo/src/kangaroo/etc/debug/karbor.conf
,修改connection中的用户名密码为本地mysql的用户名密码本地添加host,具体路径
C:\Windows\System32\drivers\etc\hosts
,添加域名解析iam-cache-proxy.domainname.com
为100.130.41.73
(IP地址可能需要根据实际情况修改) 注意:如果IE配置了http代理,需要将该域名排除在外连接VPN
- 启动karbor相关进程
- 右键
kangaroo/tests/debug/api.py
文件,选择run api.py
。 - 设置运行参数为
--config-file=D:\CSBS_code\CSBS\kangaroo\src\kangaroo\etc\debug\karbor.conf
。(需根据本地路径调整) - 设置工作路径为
D:\CSBS_code\CSBS\kangaroo\src\kangaroo
。(需根据本地路径调整) - 对
kangaroo/tests/debug/protection.py
和kangaroo/tests/debug/operationengine.py
执行相同操作。
- 右键
通过postman调用本地接口
- 下载postman(自行google),导入postman配置文件
- Postman中点击File->Settings打开设置,在General页下将SSL证书验证关闭,在Proxy页下将代理关闭
- 设置环境为Local,默认已设置鉴权相关
IAM_DOMAIN
、PROJECT_ID
、USERNAME
、DOMAIN_NAME
等环境变量,可根据需要修改。 - 通过keystone中
IAM获取租户Token
接口获取用户token,并且设置到环境变量TOKEN
中。 - 通过csbs接口调用本地接口进行调试。
常见问题
运行api时报kmc不存在:
解决方法:将kmc压缩包中的kmc目录解压到python的Lib\site-packages目录中,kmc.rar
支持时报三方包不存在:
解决方法:pip install python-XXXmoduleName。 pip的使用方法
CI LLT环境搭建
- 安装pbr,
pip install pbr
- 安装nosetest所需三方包
pip install --upgrade flake8 flake8-junit-report hacking pep8-naming testtools nose coverage mock nose-cov nose_xunitmp
- 安装Karbor运行时所需要的三方包
- 解压CSBS软件安装包
- 进入
CSBS/repo/python
目录,执行rpm -ivh *.rpm --force --nodeps
安装所有rpm包 - 进入
CSBS/repo
目录,执行rpm -ivh *.rpm --force --nodeps
安装所有rpm包 - 进入
/installfiles/repo
目录,执行rpm -ivh *.rpm --force --nodeps
- 在
/usr/lib/python2.7/site-pakcages
目录新建kmc
目录,将kmc mock
- 将kangaroo目录加入到python环境变量中
echo `pwd` > /usr/lib/python2.7/site-packages/kangaroo.pth
- 安装obs sdk
- 将platform目录下的OBS SDK拷到一个自定义目录然后解压,进入src目录执行
python setup.py install
- 将platform目录下的OBS SDK拷到一个自定义目录然后解压,进入src目录执行
- 连接openvpn:
openvpn --cd /etc/openvpn/l2/ --config /etc/openvpn/l2/client.ovpn daemon
Jenkins环境搭建
由于系统盘空间较小,需要自定义jenkins目录,执行export CATALINA_OPTS="-DJENKINS_HOME=/home/.jenkins/ -Xmx512m"
,然后重启jenkins,执行/usr/local/src/apache-tomcat-7.0.77/bin/catalina.sh start
Jenkins CI与Codeclub集成
CI挂载CIFS共享,自动推包
- 安装samba和cifs工具包
yum install cifs-utils
、yum install samba-client
- 使用mount命令挂载
mount.cifs //10.156.17.188/CTU_CI_NAS/Storage_DP_OceanStor_BCManager_eBackup/karbor /opt/archive/ -o user=xxx