
1. What is the problem In the current implementation of the Tricircle plugin for neutron, network type is not supported so users cannot create networks with network type specified. In the specification of cross-pod l2 networking feature[1], we decide to support several network types like local, shared VLAN, shared VxLAN, etc, the first step is to make the Tricircle plugin be aware of network type. 2. What is the solution to the problem Handle network type in the Tricircle plugin for neutron. 3. What the features need to be implemented to the Tricircle to realize the solution In this patch, we add a framework to load type driver which processes different network type. The framework is based on neutron ML2 implemenation, we inherit the ML2 type manager and create a new Tricircle type manager. Also the Tricircle plugin is modified to extract network type parameter from request and insert network type information to response. [1] https://github.com/openstack/tricircle/blob/master/specs/cross-pod-l2-networking.rst Change-Id: Ida9b88df6113db46e637a7841ce5c1adaf651eba
77 lines
2.0 KiB
Python
77 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_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'
|