opentack neutron学习 -- create_network实现

来源:互联网 发布:屏幕亮点修复软件 编辑:程序博客网 时间:2024/05/01 05:24

声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:http://blog.csdn.net/llg8212

内容系本人学习、研究和总结,如有雷同,不胜荣幸!

该接口的代码流程以openvswitch的实现为例。

1.请求响应消息

1.1创建nativenetwork

请求:

{

"network":

{

"name":"sample_network",

"admin_state_up":false

}

}

应答:

{

"network":{

"admin_state_up":true,

"id":"850d3f2c-f0a5-4f8b-b1cf-5836fc0be940",

"name":"sample_network",

"shared":false,#是否可以在多个tenant共享

"status":"ACTIVE",

"subnets":[],

"tenant_id":"f667b69e4d6749749ef3bcba7251d9ce"

}

}

1.2使用provider

请求:

{

"network":

{

"name":"net-name",

"admin_state_up":true,

"provider:network_type":"vlan",

"provider:physical_network":"physnet_1",

"provider:segmentation_id":201

}

}

应答:

{

"network":

{

"status":"ACTIVE",

"subnets":[],

"name":"network-1",

"admin_state_up":true,

"tenant_id":"c1210485b2424d48804aad5d39c61b8f",

"id":"3a06dfc7-d239-4aad-9a57-21cd171c72e5",

"shared":false,

"provider:network_type":"vlan",

"provider:physical_network":"physnet_1",

"provider:segmentation_id":101

}

}

1.3 Bulk create networks

请求:

{

"networks":[

{

"name":"sample_network_1",

"admin_state_up":false

},

{

"name":"sample_network_2",

"admin_state_up":false

}

]

}

注:批量创建网络的处理和创建单个的处理流程是完全一样的,仅在neutron-server中将多个网络信息解析并放到一个list中,然后通过循环去创建。最后返回的消息也是批量的消息。

2.代码流程

create_network的过程就是neutron-server接收到restapi请求后,调用plugincreate_network方法,根据请求的参数将相应信息写入数据库并返回创建的记录的过程。其时序图如下:


疑问:发出网络创建开始和结束以及dhcp的消息有什么作用?

如果创建网络时指定了provider,在plugin创建网络的过程中会先处理provider,其处理流程如下图所示:


从以上的流程处理获得如下一张provider中网络模式和physical_networksegmentation_id的取值对应关系表这也就是传入provider需要遵守的约束):

provider:

network_type

provider:physical_network

provider:

segmentation_id

备注

local


flat

如果设置,需跟plugin配置中network_vlan_ranges= XXX[:start:end]中的XXX

如果没设置并且XXX'default'physical_network设置为'default'

代码中设置为-1


vlan

1~4094之间

已有

bpprovider_network_partial_specs,允许不指定segmentation_id

grevxlan

代码中设置为None

tunneling需为true



0 0
原创粉丝点击