
1. What is the problem Network type framework has been merged but only the local network type is supported currently, so cross-pod l2 networking is still not available. 2. What is the solution to the problem At the first step, we support the simplest shared vlan network type. VMs in different pods are hosted in the network of its own pod with the same vlan ID and are connected with physical switches. 3. What the features need to be implemented to the Tricircle to realize the solution (1) A shared vlan type driver is added. (2) During the process of VM creation, if Nova_apigw finds that the required network is shared vlan type, it uses all the segment information of the network to form a network creation request and sends it to the Neutron server in the bottom pod with admin token. (3) The creation of bridge network for cross-pod l3 networking directly uses shared vlan type driver, no longer requires extra codes to allocate segments. To fully complete functional shared vlan network type, it's necessary to add functionality of port creation for gateway in each pod. But this patch set does not cover this functionality because of complexities. Change-Id: I8dd75d51fb74340c03d44e007b217f70d1a12d66
79 lines
2.0 KiB
Python
79 lines
2.0 KiB
Python
# Copyright 2015 Huawei Technologies Co., Ltd.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import datetime
|
|
|
|
|
|
# service type
|
|
ST_NOVA = 'nova'
|
|
# only support cinder v2
|
|
ST_CINDER = 'cinderv2'
|
|
ST_NEUTRON = 'neutron'
|
|
ST_GLANCE = 'glance'
|
|
|
|
# resource_type
|
|
RT_SERVER = 'server'
|
|
RT_VOLUME = 'volume'
|
|
RT_VOl_METADATA = 'volume_metadata'
|
|
RT_BACKUP = 'backup'
|
|
RT_SNAPSHOT = 'snapshot'
|
|
RT_NETWORK = 'network'
|
|
RT_SUBNET = 'subnet'
|
|
RT_PORT = 'port'
|
|
RT_ROUTER = 'router'
|
|
RT_SG = 'security_group'
|
|
|
|
# version list
|
|
NOVA_VERSION_V21 = 'v2.1'
|
|
CINDER_VERSION_V2 = 'v2'
|
|
NEUTRON_VERSION_V2 = 'v2'
|
|
|
|
# supported release
|
|
R_LIBERTY = 'liberty'
|
|
R_MITAKA = 'mitaka'
|
|
|
|
# l3 bridge networking elements
|
|
ew_bridge_subnet_pool_name = 'ew_bridge_subnet_pool'
|
|
ew_bridge_net_name = 'ew_bridge_net_%s' # project_id
|
|
ew_bridge_subnet_name = 'ew_bridge_subnet_%s' # project_id
|
|
ew_bridge_port_name = 'ew_bridge_port_%s_%s' # project_id b_router_id
|
|
|
|
ns_bridge_subnet_pool_name = 'ns_bridge_subnet_pool'
|
|
ns_bridge_net_name = 'ns_bridge_net_%s' # project_id
|
|
ns_bridge_subnet_name = 'ns_bridge_subnet_%s' # project_id
|
|
# for external gateway port: project_id b_router_id None
|
|
# for floating ip port: project_id None b_internal_port_id
|
|
ns_bridge_port_name = 'ns_bridge_port_%s_%s_%s'
|
|
|
|
MAX_INT = 0x7FFFFFFF
|
|
expire_time = datetime.datetime(2000, 1, 1)
|
|
|
|
# job status
|
|
JS_New = 'New'
|
|
JS_Running = 'Running'
|
|
JS_Success = 'Success'
|
|
JS_Fail = 'Fail'
|
|
|
|
SP_EXTRA_ID = '00000000-0000-0000-0000-000000000000'
|
|
TOP = 'top'
|
|
|
|
# job type
|
|
JT_ROUTER = 'router'
|
|
JT_PORT_DELETE = 'port_delete'
|
|
|
|
# network type
|
|
NT_LOCAL = 'local'
|
|
NT_SHARED_VLAN = 'shared_vlan'
|