基于kolla环境部署openstack打断点方式

以nova为例
1:进入nova_api容器查看nova进程

docker exec -it -uroot nova_api bash
(nova-api)[root@bjjdkg-control01 /]# ps -ef | grep nova
nova          1      0  0 Jan14 ?        00:00:00 dumb-init --single-child -- kolla_start
nova          7      1  0 Jan14 ?        00:21:03 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         40      7  0 Jan14 ?        00:02:15 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         41      7  0 Jan14 ?        00:02:18 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         42      7  0 Jan14 ?        00:02:20 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         43      7  0 Jan14 ?        00:02:21 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         44      7  0 Jan14 ?        00:02:22 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         45      7  0 Jan14 ?        00:00:00 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         46      7  0 Jan14 ?        00:00:00 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         47      7  0 Jan14 ?        00:00:00 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         48      7  0 Jan14 ?        00:00:00 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
nova         49      7  0 Jan14 ?        00:00:00 /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
root        109     86  0 16:47 pts/0    00:00:00 grep --color=auto nova

2:退出容器,修改nova_api配置文件config.json,如下:

vim /etc/kolla/nova-api/config.json
{
    "command": "nova-api",
    "config_files": [
        {
            "source": "/var/lib/kolla/config_files/nova.conf",
            "dest": "/etc/nova/nova.conf",
            "owner": "nova",
            "perm": "0600"
        }    ],
    "permissions": [
        {
            "path": "/var/log/kolla/nova",
            "owner": "nova:nova",
            "recurse": true
        }
    ]
}
修改nova-api为:"command": "sleep infinity"
之后重启nova_api 容器

3:进入容器,进行打断点
以nova resize功能处打断点,如下:

路径/var/lib/kolla/venv/lib/python2.7/site-packages/nova/api/openstack/compute/
编辑servers.py文件
    @wsgi.response(202)
    @wsgi.expected_errors((400, 401, 403, 404, 409))
    @wsgi.action('resize')
    @validation.schema(schema_servers.resize)
    def _action_resize(self, req, id, body):
        """Resizes a given instance to the flavor size requested."""
        import pdb;pdb.set_trace()     ###在此处打断点
        resize_dict = body['resize']
        flavor_ref = str(resize_dict["flavorRef"])

        kwargs = {}
        helpers.translate_attributes(helpers.RESIZE, resize_dict, kwargs)
        self._resize(req, id, flavor_ref, **kwargs)

4:启动nova服务

(nova-api)[root@control01 /]# /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api

5:执行resize 操作

nova resize 52e424e6-e47d-4759-a35d-8b46a0433c77 c8063675-ebf1-4c74-978d-a2645d6071d8

6:容器内部会自动进入pdb代码调试环境

(nova-api)[root@bjjdkg-control01 /]# /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
> /var/lib/kolla/venv/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py(1039)_action_resize()
-> resize_dict = body['resize']
(Pdb)
(Pdb)

7:打印变量。执行下一步

(nova-api)[root@bjjdkg-control01 /]# /var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/nova-api
> /var/lib/kolla/venv/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py(1039)_action_resize()
-> resize_dict = body['resize']
(Pdb)
(Pdb) n
> /var/lib/kolla/venv/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py(1040)_action_resize()
-> flavor_ref = str(resize_dict["flavorRef"])
(Pdb) n
> /var/lib/kolla/venv/lib/python2.7/site-packages/nova/api/openstack/compute/servers.py(1042)_action_resize()
-> kwargs = {}
(Pdb) p flavor_ref
'c8063675-ebf1-4c74-978d-a2645d6071d8'
(Pdb)

8:pdb基本使用

参数
n 程序执行下一步
p 打印变量
q 退出pdb调试
s 跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中
j 跳转到指定行数
c 程序继续运行,直到遇见断点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值