Merge "support dpdk"
This commit is contained in:
commit
6f28c32b08
|
@ -29,6 +29,7 @@ from daisy.common import exception
|
|||
import daisy.registry.client.v1.api as registry
|
||||
import daisy.api.backends.common as daisy_cmn
|
||||
from daisy.api.backends.kolla import config as kconfig
|
||||
import re
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
_ = i18n._
|
||||
|
@ -334,6 +335,15 @@ def _daisy_conf_mcast_flag():
|
|||
return daisy_conf_mcast_enabled
|
||||
|
||||
|
||||
def convert_string_to_hex(isocpus):
|
||||
isocpus_list = re.findall(r"\d+\.?\d*", isocpus.encode())
|
||||
isocpus_int = 0
|
||||
for i in isocpus_list:
|
||||
isocpus_int = isocpus_int + 2**int(i)
|
||||
isocpus_hex = hex(isocpus_int)[2:]
|
||||
return isocpus_hex
|
||||
|
||||
|
||||
class MulticastServerTask(object):
|
||||
|
||||
"""
|
||||
|
@ -517,6 +527,7 @@ def get_cluster_kolla_config(req, cluster_id):
|
|||
ext_macname_list = []
|
||||
sto_macname_list = []
|
||||
hbt_macname_list = []
|
||||
enable_dvs_list = []
|
||||
vlans_id = {}
|
||||
openstack_version = '3.0.0'
|
||||
docker_namespace = 'kolla'
|
||||
|
@ -640,6 +651,29 @@ def get_cluster_kolla_config(req, cluster_id):
|
|||
break
|
||||
storage_ip_list.append(com_host_ip)
|
||||
kolla_config.update({'Storage_ips': storage_ip_list})
|
||||
LOG.info("update enable_dvs config")
|
||||
params = {'cluster_id': cluster_id}
|
||||
hosts = registry.get_hosts_detail(req.context, **params)
|
||||
for host in hosts:
|
||||
host_detail = registry.get_host_metadata(req.context,
|
||||
host['id'])
|
||||
enable_dvs = False
|
||||
isolcpus = ''
|
||||
for interface in host_detail['interfaces']:
|
||||
vswitch_type = interface.get("vswitch_type")
|
||||
if vswitch_type == 'dvs':
|
||||
enable_dvs = True
|
||||
isolcpus = host_detail['isolcpus']
|
||||
break
|
||||
enable_dvs_list.append(enable_dvs)
|
||||
if len(set(enable_dvs_list)) != 1:
|
||||
msg = (_("hosts interface vswitch type must be same!"))
|
||||
LOG.error(msg)
|
||||
raise HTTPForbidden(msg)
|
||||
else:
|
||||
isolcpus_hex = convert_string_to_hex(isolcpus)
|
||||
kolla_config.update({'enable_dvs': enable_dvs})
|
||||
kolla_config.update({'ovs_dpdk_pmd_coremask': isolcpus_hex})
|
||||
return (kolla_config, mgt_ip_list, host_name_ip_list)
|
||||
|
||||
|
||||
|
@ -654,3 +688,4 @@ def generate_kolla_config_file(req, cluster_id, kolla_config, multicast_flag):
|
|||
kolla_config)
|
||||
kconfig.enable_neutron_backend(req, cluster_id, kolla_config)
|
||||
#kconfig.enable_ceilometer()
|
||||
kconfig.enable_openvswitch_dpdk(kolla_config)
|
||||
|
|
|
@ -302,6 +302,21 @@ def update_globals_yml(config_data, multicast_flag):
|
|||
default_flow_style=False)
|
||||
|
||||
|
||||
def enable_openswitch_dpdk(kolla_config):
|
||||
if kolla_config['enable_dvs']:
|
||||
openswitch_dpdk_config = {
|
||||
'enable_ovs_dpdk': 'yes',
|
||||
'neutron_bridge_name': 'dpdk_bridge',
|
||||
'tunnel_interface': 'dpdk_bridge',
|
||||
'enable_openvswitch': 'yes',
|
||||
'ovs_hugepage_mountpoint': '/mnt/huge_1GB'}
|
||||
openswitch_dpdk_config['ovs_dpdk_pmd_coremask'] = \
|
||||
kolla_config['ovs_dpdk_pmd_coremask']
|
||||
update_kolla_globals_yml(openswitch_dpdk_config)
|
||||
else:
|
||||
LOG.info(_("no need to config openvswitch dpdk"))
|
||||
|
||||
|
||||
def update_password_yml():
|
||||
LOG.info(_("begin to update kolla's passwd.yml file..."))
|
||||
cmd = 'python '\
|
||||
|
|
|
@ -769,18 +769,24 @@ def _host_update(context, values, host_id):
|
|||
for networks_plane in merged_assigned_networks:
|
||||
network_plane_names = \
|
||||
networks_plane['name'].split(',')
|
||||
#because EXTERNAL plane will not be assigned ip,
|
||||
#when EXTERNAL and DATAPLANE with same cidr/vlan, skip EXTERNAL plane
|
||||
if network_plane_names[0] == 'EXTERNAL' and len(network_plane_names) > 1:
|
||||
network_plane_name = network_plane_names[1]
|
||||
else:
|
||||
network_plane_name = network_plane_names[0]
|
||||
network_plane_ip = networks_plane.get('ip')
|
||||
if network_plane_ip:
|
||||
check_ip_exist(
|
||||
values['cluster'],
|
||||
network_plane_names[0],
|
||||
network_plane_name,
|
||||
network_plane_ip,
|
||||
session)
|
||||
else:
|
||||
network_plane_ip = \
|
||||
according_to_cidr_distribution_ip(
|
||||
values['cluster'],
|
||||
network_plane_names[0],
|
||||
network_plane_name,
|
||||
session)
|
||||
|
||||
if 'MANAGEMENT' in network_plane_names:
|
||||
|
|
|
@ -287,6 +287,20 @@ host5_meta = {u'os_version_id': None,
|
|||
u'dvsp_cpus': None,
|
||||
u'deleted_at': None,
|
||||
u'id': u'9423980b-ec76-475a-b45f-558eb4b7dfed',
|
||||
u'interfaces': [{u'assigned_networks':
|
||||
[{u'ip': u'127.0.0.1',
|
||||
u'name': u'MANAGEMENT',
|
||||
u'type': u'MANAGEMENT'}],
|
||||
u'host_id':
|
||||
u'9423980b-ec76-475a-b45f-558eb4b7dfed',
|
||||
u'id': u'299fc41d-dde5-45ca-be3b-c94693d2b9ce',
|
||||
u'ip': u'192.168.1.11', u'is_deployment': True,
|
||||
u'mac': u'4c:09:b4:b2:79:8a',
|
||||
u'mode': None, u'name': u'enp132s0f0',
|
||||
u'netmask': u'255.255.255.0',
|
||||
u'pci': u'0000:84:00.0', u'slave1': None,
|
||||
u'slave2': None, u'type': u'ether',
|
||||
u'vswitch_type': 'dvs'}],
|
||||
u'vcpu_pin_set': None,
|
||||
u'dvsv_cpus': None,
|
||||
u'hwm_ip': None,
|
||||
|
@ -314,7 +328,8 @@ host5_meta = {u'os_version_id': None,
|
|||
u'root_pwd': u'ossdbg1',
|
||||
u'dvs_high_cpuset': None,
|
||||
u'dvs_cpus': None,
|
||||
u'root_lv_size': 102400}
|
||||
u'root_lv_size': 102400,
|
||||
u'isolcpus': u'1,13'}
|
||||
|
||||
host6_meta = {u'os_version_id': None,
|
||||
u'config_set_id': None,
|
||||
|
@ -437,6 +452,8 @@ class TestInstall(test.TestCase):
|
|||
self.installer = install.KOLLAInstallTask(
|
||||
self.req, '8ad27e36-f3e2-48b4-84b8-5b676c6fabde')
|
||||
|
||||
@mock.patch("daisy.registry.client.v1.api.get_host_metadata")
|
||||
@mock.patch("daisy.registry.client.v1.api.get_hosts_detail")
|
||||
@mock.patch('daisy.api.backends.kolla.common.get_computer_node_cfg')
|
||||
@mock.patch('daisy.api.backends.kolla.common.get_controller_node_cfg')
|
||||
@mock.patch('daisy.api.backends.kolla.common.get_host_detail')
|
||||
|
@ -449,7 +466,8 @@ class TestInstall(test.TestCase):
|
|||
mock_do_get_cluster_networks_detail,
|
||||
mock_do_get_roles_detail,
|
||||
mock_do_get_hosts_of_role, mock_do_get_host_detail,
|
||||
mock_do_get_controller_node_cfg, mock_do_get_computer_node_cfg):
|
||||
mock_do_get_controller_node_cfg, mock_do_get_computer_node_cfg,
|
||||
mock_do_get_hosts_detail, mock_get_host_metadata):
|
||||
daisy_kolla_ver_path = '/var/lib/daisy/versionfile/kolla/'
|
||||
cmd = 'mkdir -p %s' % daisy_kolla_ver_path
|
||||
subprocesscall(cmd)
|
||||
|
@ -480,7 +498,8 @@ class TestInstall(test.TestCase):
|
|||
'host_name': u'',
|
||||
'dat_macname': u'',
|
||||
'ext_macname': u''}
|
||||
|
||||
mock_do_get_hosts_detail.return_value = [host5_meta]
|
||||
mock_get_host_metadata.return_value = host5_meta
|
||||
(kolla_config, mgt_ip_list, host_name_ip_list) =\
|
||||
kcommon.get_cluster_kolla_config(
|
||||
self.req,
|
||||
|
|
Loading…
Reference in New Issue