Openstack Neutron扩展实现细节Word下载.docx
- 文档编号:15905713
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:23
- 大小:80.91KB
Openstack Neutron扩展实现细节Word下载.docx
《Openstack Neutron扩展实现细节Word下载.docx》由会员分享,可在线阅读,更多相关《Openstack Neutron扩展实现细节Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
'
dummy'
:
DUMMY,
lbaas'
LOADBALANCER,
lbaasv2'
LOADBALANCERV2,
fwaas'
FIREWALL,
vpnaas'
VPN,
metering'
METERING,
qos'
QOS,
router'
L3_ROUTER_NAT
}
4Neutron的Server部分
4.1扩展的Rest接口定义
4.1.1资源的属性定义表
资源的属性定义表格式如下,定义了Rest接口提供了配置的资源类型,对资源进行操作的属性要求;
RESOURCE_ATTRIBUTE_MAP的key为每一种资源名的复数形式,Value为该资源的scheme描述。
RESOURCE_ATTRIBUTE_MAP={
qos_rules'
{
id'
{'
allow_post'
False,'
allow_put'
False,
validate'
type:
uuid'
None},
is_visible'
True,
primary_key'
True},
tenant_id'
True,'
string'
attr.TENANT_ID_MAX_LEN},
required_by_policy'
network_id'
port_id'
max_kbps'
convert_to'
convert_to_unsigned_int_or_none},
max_burst_kbps'
True,'
}
REST接口有post,put,get,delete四种方法,post为创建资源,put为修改某个资源,get为获取某个资源,delete为删除某个资源
资源的每个属性都定义了一些约束:
allow_posTrue:
创建时可以指定;
False:
创建时不能指定
allow_putTrue:
可以修改;
不允许修改
validate:
验证值的合法性,可以验证最大长度,数据类型,或者是枚举值
is_visible:
是否可见,list资源时属性值是否可以返回
4.1.2扩展的描述
该文件的路径为$包名/extensions/qos.py
classQos(extensions.ExtensionDescriptor):
@classmethod
defget_name(cls):
return"
QOSservice"
defget_alias(cls):
qos"
defget_description(cls):
ExtensionforQOSservice"
defget_namespace(cls):
http:
//wiki.openstack.org/neutron/QOS/API_1.0"
defget_updated(cls):
2015-04-07T10:
00:
00-00:
00"
defget_resources(cls):
special_mappings={}
plural_mappings=resource_helper.build_plural_mappings(
special_mappings,RESOURCE_ATTRIBUTE_MAP)
attr.PLURALS.update(plural_mappings)
returnresource_helper.build_resource_info(plural_mappings,RESOURCE_ATTRIBUTE_MAP,constants.QOS)
defget_plugin_interface(cls):
returnQOSPluginBase
defupdate_attributes_map(self,attributes):
super(Qos,self).update_attributes_map(
attributes,extension_attrs_map=RESOURCE_ATTRIBUTE_MAP)
defget_extended_resources(self,version):
ifversion=="
2.0"
returnRESOURCE_ATTRIBUTE_MAP
else:
return{}
扩展的描述需要从extensions.ExtensionDescriptor继承,get_name,get_description,get_namespace,get_updated四个函数返回的内容,是在调用neutronext-showqos命令时显示的内容。
defget_resources(cls):
4.1.3插件接口的定义
插件的接口必须从ServicePluginBase继承,get_plugin_name,get_plugin_type,get_plugin_description必须实现,为插件的基础信息。
@six.add_metaclass(abc.ABCMeta)
classQOSPluginBase(ServicePluginBase):
defget_plugin_name(self):
returnconstants.QOS
defget_plugin_type(self):
defget_plugin_description(self):
return'
qosserviceplugin'
@abc.abstractmethod
defget_qos_rules(self,context,filters=None,fields=None):
pass
defget_qos_rule(self,context,id,fields=None):
defcreate_qos_rule(self,context,qos_rule):
"
"
qos_rule={'
qos_rule'
{'
'
'
10,'
10}}
defupdate_qos_rule(self,context,id,qos_rule):
defdelete_qos_rule(self,context,id):
必须为每个资源定义5个接口,分别为:
#list资源的接口
defget_资源复数名(self,context,filters=None,fields=None)
#show单个资源的接口
defget_资源单数名(self,context,id,fields=None):
#create单个资源的接口
defcreate_资源单数名(self,context,data):
#update单个资源的接口
defupdate_资源单数名(self,context,id,data):
#delete单个资源的接口
defdelete_资源单数名(self,context,id):
4.1.4插件的数据库实现
4.1.4.1定义数据库模型类
classQosRule(model_base.BASEV2,models_v2.HasId,models_v2.HasTenant):
__tablename__='
__table_args__=(
sa.schema.UniqueConstraint('
name='
uniq_qos_rule_port'
),
)
network_id=sa.Column(sa.String(36),nullable=False)
port_id=sa.Column(sa.String(36)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Openstack Neutron扩展实现细节 Neutron 扩展 实现 细节