trio2o/tricircle/common
zhiyuan_cai 08be0eba7e Implement floating ip disassociation
According to the current design of cross pod L3 networking,
user needs to specify a pod when creating an external network
and the external network will be located in this pod. For VMs
located in other pods to access the external network, we need
a bridge network to connect these pods.

We assign the bridge network a CIDR allocated from a CIDR
pool. In the pod hosting the VM, say Pod_vm, a bridge external
network is created with the CIDR, so we can allocate a floating
ip from the CIDR and bind it to the VM port. In the pod hosting
the real external network(say "real" here to distinguish with
the bridge external network), say Pod_extnet, a bridge internal
network is created with the CIDR, so we can create a port with
the same ip as floating ip in Pod_vm, and bind it to the real
floating ip in Pod_extnet. With the bridge network, via two-step
DNAT, the VM can be accessed from the real external network.

For example, let's say we have an internal network with CIDR
10.0.1.0/24 and an external network with CIDR 162.3.124.0/24,
the CIDR of bridge network is 100.0.1.0/24, when binding a VM
ip 10.0.1.4 to a floating ip 162.3.124.5, the VM ip is first
bound to 100.0.1.4, which is allocated from 100.0.1.0/24, then
100.0.1.4 is bound to 162.3.124.5.

In the case that VM and external network are in the same pod,
bridge network is not needed.

So plugin needs to distinguish these two cases when handling
floating ip disassociation. If VM and external network are in
the same pod, plugin only disassociates the binding; if they
are in different pods, plugin also needs to release the ip
allocated from the bridge network.

Change-Id: Ibae353ec81aceda53016b6ea8aba1872d6d514be
2016-05-27 11:27:22 +08:00
..
__init__.py cascade_service framework 2015-08-05 14:49:25 +03:00
az_ag.py Move statless design from experiment to master branch 2016-01-14 12:56:57 +08:00
baserpc.py Fix incorrect file permission 2016-05-24 16:04:16 +08:00
client.py Implement router gateway removing 2016-05-10 17:11:18 +08:00
config.py Move statless design from experiment to master branch 2016-01-14 12:56:57 +08:00
constants.py Implement server delete API 2016-04-22 10:40:07 +08:00
context.py Quota management for Nova-APIGW and Cinder-APIGW(part2) 2016-02-18 10:14:56 +08:00
exceptions.py Fix test error caused by i18n 2016-05-23 16:43:22 +08:00
httpclient.py Implement volume list availability zone filter 2016-05-03 17:15:27 +08:00
i18n.py Reorganize code 2015-11-23 16:49:45 +08:00
lock_handle.py Pass tempest list_server_filters test 2016-04-28 11:11:11 +08:00
opts.py Move statless design from experiment to master branch 2016-01-14 12:56:57 +08:00
quota.py Quota management for Nova-APIGW(part4 metadata and injected files) 2016-04-11 11:45:41 +08:00
resource_handle.py Implement floating ip disassociation 2016-05-27 11:27:22 +08:00
restapp.py Move statless design from experiment to master branch 2016-01-14 12:56:57 +08:00
rpc.py Fix incorrect file permission 2016-05-24 16:04:16 +08:00
serializer.py Fix incorrect file permission 2016-05-24 16:04:16 +08:00
topics.py Fix incorrect file permission 2016-05-24 16:04:16 +08:00
utils.py Pass tempest list_server_filters test 2016-04-28 11:11:11 +08:00
version.py Move statless design from experiment to master branch 2016-01-14 12:56:57 +08:00
xrpcapi.py Fix incorrect file permission 2016-05-24 16:04:16 +08:00