00c98dce02
installation procedure & tech-notes at vmware_nsx_tempest/README.rst With this plugin method, vmware_nsx_tempest tests can be treated as tempest tests and executed under tempest environment. Fix nsxv_client to support multiple transport zones. Change-Id: Id103c0ce03d75749fe6295108db48493f565b05a Implements: blueprint vmware-nsx-tempest-plugin
95 lines
3.5 KiB
Python
95 lines
3.5 KiB
Python
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
|
# Copyright 2015 OpenStack Foundation
|
|
#
|
|
# 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.
|
|
|
|
|
|
SEGMENTATION_ID_DELIMITER = "#"
|
|
INTERFACE_SEG_ID_DELIMITER = "|"
|
|
DEVICE_INTERFACE_DELIMITER = "::"
|
|
DEVICE_DELIMITER = ","
|
|
INTERFACE_DELIMITER = ";"
|
|
"""
|
|
Sample for providing input for gateway creation in config is noted below
|
|
Options provide flexibility to user to create l2gateway
|
|
For single device ,single interface with single vlan
|
|
l2gw_switch = device_name1::int_name1|vlan1
|
|
For single device multiple interfaces with single or multiple vlans
|
|
l2gw_switch = device_name1::int_name1|vlan1#vlan2;int_name2|vlan3
|
|
For multiple devices with mutiple interfaces having single or mutiple vlan
|
|
l2gw_switch = device_n1::int_n1|vlan1,device_n2::int_n2|vlan2#vlan3
|
|
"""
|
|
|
|
|
|
def get_interface(interfaces):
|
|
interface_dict = []
|
|
for interface in interfaces:
|
|
if INTERFACE_SEG_ID_DELIMITER in interface:
|
|
int_name = interface.split(INTERFACE_SEG_ID_DELIMITER)[0]
|
|
segid = interface.split(INTERFACE_SEG_ID_DELIMITER)[1]
|
|
if SEGMENTATION_ID_DELIMITER in segid:
|
|
segid = segid.split(SEGMENTATION_ID_DELIMITER)
|
|
else:
|
|
segid = [segid]
|
|
interface_detail = {'name': int_name, 'segmentation_id': segid}
|
|
else:
|
|
interface_detail = {'name': interface}
|
|
interface_dict.append(interface_detail)
|
|
return interface_dict
|
|
|
|
|
|
def get_device_interface(device_name, interface):
|
|
if INTERFACE_DELIMITER in interface:
|
|
interface_dict = interface.split(INTERFACE_DELIMITER)
|
|
interfaces = get_interface(interface_dict)
|
|
else:
|
|
interfaces = get_interface([interface])
|
|
device = {'device_name': device_name,
|
|
'interfaces': interfaces}
|
|
return device
|
|
|
|
|
|
def get_l2gw_body(l2gw_conf):
|
|
device_dict = []
|
|
devices = l2gw_conf.split(DEVICE_DELIMITER)
|
|
for device in devices:
|
|
if DEVICE_INTERFACE_DELIMITER in device:
|
|
device_name = device.split(DEVICE_INTERFACE_DELIMITER)[0]
|
|
interface = device.split(DEVICE_INTERFACE_DELIMITER)[1]
|
|
device = get_device_interface(device_name, interface)
|
|
device_dict.append(device)
|
|
body = {'devices': device_dict}
|
|
return body
|
|
|
|
|
|
def form_dict_devices(devices):
|
|
seg_ids = []
|
|
devices1 = dict()
|
|
int_seg = []
|
|
for device in devices:
|
|
device_name = device['device_name']
|
|
interfaces = device['interfaces']
|
|
for interface in interfaces:
|
|
interface_name = interface['name']
|
|
int_seg.append(interface_name)
|
|
seg_id = interface['segmentation_id']
|
|
if type(seg_id) is list:
|
|
for segid in seg_id:
|
|
seg_ids.append(segid)
|
|
else:
|
|
seg_ids.append(seg_id)
|
|
int_seg.append(seg_id)
|
|
devices1.setdefault(device_name, []).append(int_seg)
|
|
int_seg = []
|
|
return devices1
|