Update dpdk and sr-iov configuration methods with new api
Serialization for features mentioned in title was changed so
we have to use new fields
Change-Id: If362a37fdb16d6672a266567490e67a22ba16f3e
Partial-bug:1644588
(cherry picked from commit 11783da6ac
)
This commit is contained in:
parent
8c798b4f37
commit
6bf6fcdeff
@ -3153,46 +3153,58 @@ class FuelWebClient29(object):
|
|||||||
self.client.upload_node_attributes(node_attributes, nailgun_node_id)
|
self.client.upload_node_attributes(node_attributes, nailgun_node_id)
|
||||||
|
|
||||||
def check_dpdk(self, nailgun_node_id, net='private'):
|
def check_dpdk(self, nailgun_node_id, net='private'):
|
||||||
compute_net = self.client.get_node_interfaces(nailgun_node_id)
|
compute_interfaces = self.client.get_node_interfaces(nailgun_node_id)
|
||||||
dpdk_available = False
|
target_interface = None
|
||||||
dpdk_enabled = False
|
for interface in compute_interfaces:
|
||||||
for interface in compute_net:
|
if net in [n['name'] for n in interface['assigned_networks']]:
|
||||||
if net not in [n['name'] for n in interface['assigned_networks']]:
|
target_interface = interface
|
||||||
continue
|
|
||||||
if 'dpdk' not in interface['interface_properties']:
|
|
||||||
continue
|
|
||||||
|
|
||||||
dpdk_available = interface['interface_properties']['dpdk'][
|
|
||||||
'available']
|
|
||||||
if 'enabled' in interface['interface_properties']['dpdk']:
|
|
||||||
dpdk_enabled = interface['interface_properties']['dpdk'][
|
|
||||||
'enabled']
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
assert_is_not_none(
|
||||||
|
target_interface,
|
||||||
|
"Network {!r} is not found on interfaces".format(net))
|
||||||
|
|
||||||
|
if 'interface_properties' in target_interface.keys():
|
||||||
|
logger.debug("Using old interface serialization scheme")
|
||||||
|
dpdk_available = target_interface['interface_properties']['dpdk'][
|
||||||
|
'available']
|
||||||
|
dpdk_enabled = target_interface['interface_properties']['dpdk'][
|
||||||
|
'enabled']
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
dpdk_available = target_interface['meta']['dpdk']['available']
|
||||||
|
dpdk_enabled = target_interface['attributes']['dpdk'][
|
||||||
|
'enabled']['value']
|
||||||
|
|
||||||
return {'available': dpdk_available, 'enabled': dpdk_enabled}
|
return {'available': dpdk_available, 'enabled': dpdk_enabled}
|
||||||
|
|
||||||
def enable_dpdk(self, nailgun_node_id, switch_to=True, net='private',
|
def enable_dpdk(self, nailgun_node_id, switch_to=True, net='private',
|
||||||
forceEnable=False):
|
force_enable=False):
|
||||||
if not forceEnable:
|
if not force_enable:
|
||||||
assert_true(self.check_dpdk(nailgun_node_id, net=net)['available'],
|
assert_true(self.check_dpdk(nailgun_node_id, net=net)['available'],
|
||||||
'DPDK not available on selected interface')
|
'DPDK not available on selected interface')
|
||||||
|
|
||||||
compute_net = self.client.get_node_interfaces(
|
compute_interfaces = self.client.get_node_interfaces(nailgun_node_id)
|
||||||
nailgun_node_id)
|
target_interface = None
|
||||||
for interface in compute_net:
|
for interface in compute_interfaces:
|
||||||
for ids in interface['assigned_networks']:
|
if net in [n['name'] for n in interface['assigned_networks']]:
|
||||||
if ids['name'] == net:
|
target_interface = interface
|
||||||
if interface['type'] == 'bond':
|
|
||||||
interface['bond_properties']['type__'] = 'dpdkovs'
|
|
||||||
interface['interface_properties']['dpdk'].update(
|
|
||||||
{'enabled': switch_to})
|
|
||||||
else:
|
|
||||||
interface['interface_properties']['dpdk'][
|
|
||||||
'enabled'] = switch_to
|
|
||||||
break
|
break
|
||||||
|
|
||||||
self.client.put_node_interfaces(
|
if target_interface['type'] == 'bond':
|
||||||
[{'id': nailgun_node_id, 'interfaces': compute_net}])
|
target_interface['bond_properties']['type__'] = 'dpdkovs'
|
||||||
|
|
||||||
|
if 'interface_properties' in target_interface.keys():
|
||||||
|
logger.debug("Using old interface serialization scheme")
|
||||||
|
target_interface['interface_properties']['dpdk'][
|
||||||
|
'enabled'] = switch_to
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
target_interface['attributes']['dpdk'][
|
||||||
|
'enabled']['value'] = switch_to
|
||||||
|
|
||||||
|
self.client.put_node_interfaces([{'id': nailgun_node_id,
|
||||||
|
'interfaces': compute_interfaces}])
|
||||||
|
|
||||||
return self.check_dpdk(
|
return self.check_dpdk(
|
||||||
nailgun_node_id, net=net)['enabled'] == switch_to
|
nailgun_node_id, net=net)['enabled'] == switch_to
|
||||||
@ -3211,10 +3223,10 @@ class FuelWebClient29(object):
|
|||||||
devops_sriov_nics.append(interface['name'])
|
devops_sriov_nics.append(interface['name'])
|
||||||
if interface['assigned_networks']:
|
if interface['assigned_networks']:
|
||||||
continue
|
continue
|
||||||
if 'sriov' not in interface['interface_properties']:
|
api_key = "meta" if "meta" in interface else "interface_properties"
|
||||||
|
if 'sriov' not in interface[api_key]:
|
||||||
continue
|
continue
|
||||||
sriov_available = interface['interface_properties']['sriov'][
|
sriov_available = interface[api_key]['sriov']['available']
|
||||||
'available']
|
|
||||||
if sriov_available:
|
if sriov_available:
|
||||||
nailgun_sriov_nics.append(interface['name'])
|
nailgun_sriov_nics.append(interface['name'])
|
||||||
return set(devops_sriov_nics).intersection(nailgun_sriov_nics)
|
return set(devops_sriov_nics).intersection(nailgun_sriov_nics)
|
||||||
@ -3228,9 +3240,18 @@ class FuelWebClient29(object):
|
|||||||
for interface in node_networks:
|
for interface in node_networks:
|
||||||
if interface['name'] not in nics_to_enable_sriov:
|
if interface['name'] not in nics_to_enable_sriov:
|
||||||
continue
|
continue
|
||||||
|
if 'interface_properties' in interface:
|
||||||
interface['interface_properties']['sriov']['enabled'] = True
|
interface['interface_properties']['sriov']['enabled'] = True
|
||||||
interface['interface_properties']['sriov']['sriov_numvfs'] = \
|
interface['interface_properties']['sriov'][
|
||||||
interface['interface_properties']['sriov']['sriov_totalvfs']
|
'sriov_numvfs'] = interface['interface_properties'][
|
||||||
|
'sriov']['sriov_totalvfs']
|
||||||
|
else:
|
||||||
|
interface['attributes']['sriov']['enabled']['value'] = True
|
||||||
|
interface['attributes']['sriov']['numvfs'] = \
|
||||||
|
interface['meta']['sriov']['totalvfs']
|
||||||
|
|
||||||
|
self.client.put_node_interfaces(
|
||||||
|
[{'id': nailgun_node_id, 'interfaces': node_networks}])
|
||||||
|
|
||||||
self.client.put_node_interfaces(
|
self.client.put_node_interfaces(
|
||||||
[{'id': nailgun_node_id, 'interfaces': node_networks}])
|
[{'id': nailgun_node_id, 'interfaces': node_networks}])
|
||||||
|
Loading…
Reference in New Issue
Block a user