开发环境搭建

python环境设置

  1. 安装pip,具体方式google
  2. 安装VCForPython27,用于编译c语言
  3. 由于网络原因无法从外网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
      
  4. 从requirments安装三方包,进入karbor/src/karbor, 编辑requirements.txt,由于内部源软件缺少新版本,需要降低版本需求或直接注释掉版本需求,然后执行pip install -r requirments.txt
  5. mock kmc,进入python的site-packages目录,创建kmc目录和init.py将,将kmc.py拷贝到kmc目录
  6. 如果运行过程中报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搭建

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上需要做如下适配:

  1. 修改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
    
  2. 修改site-packages\keystonemiddleware\auth_token\_signing_dir.py文件里的_verify_signing_dir函数,在第一句if os.path.isdir(self._directory_name): return 0(新增),否则修改文件失败。

  3. 修改site-packages\eventlet\greenio\base.py文件里的 set_nonblocking函数, 在except AttributeError的注释后加return

  4. 修改site-packages\keystonemiddleware\auth_token\__init__.py文件里的_validate_offline函数,给语句self._revocations.check(token_hashes)之前加判断条件if self._check_revocations_for_cached:

  5. 修改site-packages\keystoneauth1\identity\base.py文件里的get_endpoint_data函数,把if interface is plugin.AUTH_INTERFACE:修改为if True or interface is plugin.AUTH_INTERFACE:

  6. 修改kangaroo\src\kangaroo\etc\debug\karbor.conf文件的[keystone_authtoken] insecure = true

  7. 修改kangaroo\src\kangaroo\etc\debug\api_paste.ini文件里[filter:authtoken] signing_dir = D:\runtime\keystone-signing\

  8. 修改karbor\src\karbor\karbor\utils.py里的find_config函数,在possible_locations数组里加一条os.path.join("etc\\debug", config_path)

本地运行karbor(openstack)

如果想深入研究openstack wsgi框架,oslo相关类库,本地调试是最好的手段,具体步骤如下。

  1. 生成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。

  2. 拷贝/kangaroo/src/kangaroo/karbor_extend目录下文件到karbor目录karbor\src\karbor\karbor中,覆盖karbor原生代码

  3. 应用Karbor补丁 利用git bash进入CSBS根目录,执行git apply kangaroo/src/kangaroo/patches/*

  4. 生成Karbor数据库

    本地登录mysql,新建数据库,取名为karbor

    编辑kangaroo/src/kangaroo/etc/debug/karbor.conf,修改connection中的用户名密码为本地mysql的用户名密码

  5. 本地添加host,具体路径C:\Windows\System32\drivers\etc\hosts,添加域名解析iam-cache-proxy.domainname.com100.130.41.73(IP地址可能需要根据实际情况修改) 注意:如果IE配置了http代理,需要将该域名排除在外

  6. 连接VPN

  7. 启动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.pykangaroo/tests/debug/operationengine.py执行相同操作。

通过postman调用本地接口

  1. 下载postman(自行google),导入postman配置文件
  2. Postman中点击File->Settings打开设置,在General页下将SSL证书验证关闭,在Proxy页下将代理关闭
  3. 设置环境为Local,默认已设置鉴权相关IAM_DOMAINPROJECT_IDUSERNAMEDOMAIN_NAME等环境变量,可根据需要修改。
  4. 通过keystone中IAM获取租户Token接口获取用户token,并且设置到环境变量TOKEN中。
  5. 通过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
  • 连接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-utilsyum install samba-client
  • 使用mount命令挂载mount.cifs //10.156.17.188/CTU_CI_NAS/Storage_DP_OceanStor_BCManager_eBackup/karbor /opt/archive/ -o user=xxx

results matching ""

    No results matching ""