作为个人学习笔记分享,有任何问题欢迎交流!
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 g