Security group的流程分析nova篇

作为个人学习笔记分享,有任何问题欢迎交流!

Security group在G版本中可由nova和quantum分别来完成。Nova部分的底层由iptables完成,quantum部分应该也是。本文档主要分析nova部分,quantum部分待续。

1 首先由python-novaclient接收处理请求

/novaclient/v1_1/shell.py

def _get_secgroup(cs, secgroup):
    # Check secgroup is an ID
    if uuidutils.is_uuid_like(strutils.safe_encode(secgroup)):
        try:
            return cs.security_groups.get(secgroup)
        except exceptions.NotFound:
            pass

    # Check secgroup as a name
    match_found = False
    for s in cs.security_groups.list():
        encoding = (locale.getpreferredencoding() or
            sys.stdin.encoding or
            'UTF-8')
        s.name = s.name.encode(encoding)
        if secgroup == s.name:
            if match_found != False:
                msg = ("Multiple security group matches found for name"
                       " '%s', use an ID to be more specific." % secgroup)
                raise exceptions.NoUniqueMatch(msg)
            match_found = s
    if match_found is False:
        raise exceptions.CommandError("Secgroup ID or name '%s' not found."
                                      % secgroup)
return match_found

2./novaclient/v1_1/security_groups.py

def get(self, group_id):
        """
        Get a security group

        :param group_id: The security group to get by ID
        :rtype: :class:`SecurityGroup`
   
OpenStack 的命令行工具中,`openstack security group create` 命令用于创建安全组。然而,如果用户尝试使用 `--desciption` 参数时遇到错误提示 `unrecognized arguments`,这通常是因为参数拼写错误或版本不支持该参数。 ### 问题分析 OpenStack CLI 支持的参数名称为 `--description` 而不是 `--desciption`。因此,错误的根本原因是参数名称的拼写错误。此外,需要确认当前使用的 OpenStack CLI 版本是否支持该参数[^2]。 ### 解决方案 1. **修正参数拼写** 将 `--desciption` 修改为正确的参数名称 `--description`。例如: ```bash openstack security group create --description "My Security Group" my_sec_group ``` 2. **检查 OpenStack CLI 版本** 确保使用的 OpenStack CLI 版本支持 `--description` 参数。可以运行以下命令检查版本: ```bash openstack --version ``` 如果版本较旧且不支持该参数,建议升级到最新版本[^3]。 3. **验证命令语法** 使用 `openstack help security group create` 查看命令的帮助文档,确认参数的正确用法。例如: ```bash openstack help security group create ``` 4. **示例代码** 下面是一个完整的示例,展示如何正确创建带有描述的安全组: ```bash # 创建一个名为 my_sec_group 的安全组,并添加描述 openstack security group create --description "This is a test security group" my_sec_group # 为安全组添加规则(允许 ICMP 流量) openstack security group rule create my_sec_group --proto icmp --egress --remote-ip 0.0.0.0/0 openstack security group rule create my_sec_group --proto icmp --ingress --remote-ip 0.0.0.0/0 ``` 5. **注意事项** - 如果仍然遇到问题,请确保环境变量(如 `OS_AUTH_URL`、`OS_USERNAME`、`OS_PASSWORD` 等)已正确配置。 - 检查 OpenStack 平台的权限设置,确保当前用户具有创建安全组的权限[^4]。 ### 总结 通过修正参数拼写错误、验证 CLI 版本以及参考帮助文档,可以有效解决 `unrecognized arguments --desciption` 错误。确保遵循 OpenStack CLI 的标准语法和最佳实践。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值