Update offloading and MTU configuration due to a new API
Change-Id: I958f0a8caf8dc8156c8a95381c94690b84ee7ae6
Closes-Bug: 1644588
(cherry picked from commit 94e2fd57a2
)
This commit is contained in:
parent
02d7097b8e
commit
3c7d662d95
|
@ -1733,32 +1733,120 @@ class FuelWebClient29(object):
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def get_offloading_modes(self, node_id, interfaces):
|
def get_offloading_modes(self, node_id, interfaces):
|
||||||
offloading_types = []
|
"""Get offloading modes for predifened ifaces
|
||||||
for i in self.client.get_node_interfaces(node_id):
|
|
||||||
for interface in interfaces:
|
:param node_id: int, nailgun node id
|
||||||
if i['name'] == interface:
|
:param interfaces: list, list of iface names
|
||||||
for offloading_type in i['offloading_modes']:
|
:return: list, list of available offloading modes
|
||||||
offloading_types.append(offloading_type['name'])
|
"""
|
||||||
return offloading_types
|
target_ifaces = [iface
|
||||||
|
for iface in self.client.get_node_interfaces(node_id)
|
||||||
|
if iface['name'] in interfaces]
|
||||||
|
|
||||||
|
if 'interface_properties' in target_ifaces[0]:
|
||||||
|
logger.debug("Using old interface serialization scheme")
|
||||||
|
offloading_types = set([
|
||||||
|
offloading_type['name']
|
||||||
|
for iface in target_ifaces
|
||||||
|
for offloading_type in iface['offloading_modes']])
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
offloading_types = set([
|
||||||
|
offloading_type
|
||||||
|
for iface in target_ifaces
|
||||||
|
for offloading_type in
|
||||||
|
iface['attributes']['offloading']['modes']['value']])
|
||||||
|
return list(offloading_types)
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def update_offloads(self, node_id, update_values, interface_to_update):
|
def update_offloads(self, node_id, update_values, interface_to_update):
|
||||||
interfaces = self.client.get_node_interfaces(node_id)
|
"""Update offloading modes for the corresponding interface
|
||||||
|
|
||||||
for i in interfaces:
|
:param node_id: int, nailgun node id
|
||||||
|
:param update_values: dict, pair of mode name and value
|
||||||
|
:param interface_to_update: str, target iface name
|
||||||
|
"""
|
||||||
|
ifaces = self.client.get_node_interfaces(node_id)
|
||||||
|
# get target iface
|
||||||
|
for i in ifaces:
|
||||||
if i['name'] == interface_to_update:
|
if i['name'] == interface_to_update:
|
||||||
for new_mode in update_values['offloading_modes']:
|
iface = i
|
||||||
for mode in i['offloading_modes']:
|
break
|
||||||
if mode['name'] == new_mode['name']:
|
|
||||||
mode.update(new_mode)
|
def prepare_offloading_modes(types):
|
||||||
break
|
return [{'name': name, 'state': types[name], 'sub': []}
|
||||||
else:
|
for name in types]
|
||||||
raise Exception("Offload type '{0}' is not applicable"
|
|
||||||
" for interface {1}".format(
|
if 'interface_properties' in iface:
|
||||||
new_mode['name'],
|
logger.debug("Using old interface serialization scheme")
|
||||||
interface_to_update))
|
offloading_modes = prepare_offloading_modes(update_values)
|
||||||
|
for new_mode in offloading_modes:
|
||||||
|
for mode in iface['offloading_modes']:
|
||||||
|
if mode['name'] == new_mode['name']:
|
||||||
|
mode.update(new_mode)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise Exception("Offload type '{0}' is not applicable"
|
||||||
|
" for interface {1}".format(
|
||||||
|
new_mode['name'],
|
||||||
|
interface_to_update))
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
for mode in update_values:
|
||||||
|
iface['attributes']['offloading']['modes']['value'][mode] = \
|
||||||
|
update_values[mode]
|
||||||
|
|
||||||
self.client.put_node_interfaces(
|
self.client.put_node_interfaces(
|
||||||
[{'id': node_id, 'interfaces': interfaces}])
|
[{'id': node_id, 'interfaces': ifaces}])
|
||||||
|
|
||||||
|
def set_mtu(self, nailgun_node_id, iface, mtu=1500):
|
||||||
|
"""Set MTU for the corresponding interfaces
|
||||||
|
|
||||||
|
:param nailgun_node_id: int, naigun node id
|
||||||
|
:param iface: str, interface name
|
||||||
|
:param mtu: int, value of MTU
|
||||||
|
"""
|
||||||
|
ifaces = self.client.get_node_interfaces(nailgun_node_id)
|
||||||
|
# get target iface
|
||||||
|
for i in ifaces:
|
||||||
|
if i['name'] == iface:
|
||||||
|
target_iface = i
|
||||||
|
break
|
||||||
|
|
||||||
|
if 'interface_properties' in target_iface:
|
||||||
|
logger.debug("Using old interface serialization scheme")
|
||||||
|
target_iface['interface_properties']['mtu'] = mtu
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
target_iface['attributes']['mtu']['value']['value'] = mtu
|
||||||
|
self.client.put_node_interfaces([{'id': nailgun_node_id,
|
||||||
|
'interfaces': ifaces}])
|
||||||
|
|
||||||
|
def disable_offloading(self, nailgun_node_id, iface,
|
||||||
|
offloading=False):
|
||||||
|
"""Disable offloading for the corresponding interfaces
|
||||||
|
|
||||||
|
:param nailgun_node_id: int, naigun node id
|
||||||
|
:param iface: str, interface name
|
||||||
|
:param offloading: bool, enable or disable offloading
|
||||||
|
"""
|
||||||
|
ifaces = self.client.get_node_interfaces(nailgun_node_id)
|
||||||
|
# get target iface
|
||||||
|
for i in ifaces:
|
||||||
|
if i['name'] == iface:
|
||||||
|
target_iface = i
|
||||||
|
break
|
||||||
|
|
||||||
|
if 'interface_properties' in target_iface:
|
||||||
|
logger.debug("Using old interface serialization scheme")
|
||||||
|
target_iface['interface_properties']['disable_offloading'] = \
|
||||||
|
offloading
|
||||||
|
else:
|
||||||
|
logger.debug("Using new interface serialization scheme")
|
||||||
|
target_iface['attributes']['offloading']['disable']['value'] = \
|
||||||
|
offloading
|
||||||
|
self.client.put_node_interfaces([{'id': nailgun_node_id,
|
||||||
|
'interfaces': ifaces}])
|
||||||
|
|
||||||
def change_default_network_settings(self):
|
def change_default_network_settings(self):
|
||||||
def fetch_networks(networks):
|
def fetch_networks(networks):
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from copy import deepcopy
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from devops.helpers import helpers as devops_helpers
|
from devops.helpers import helpers as devops_helpers
|
||||||
|
@ -45,13 +44,13 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
iface_alias('eth4'): ['storage'],
|
iface_alias('eth4'): ['storage'],
|
||||||
}
|
}
|
||||||
|
|
||||||
interfaces_update = [{
|
iface_update = {
|
||||||
'name': iface_alias('eth3'),
|
'name': iface_alias('eth3'),
|
||||||
'interface_properties': {
|
'interface_properties': {
|
||||||
'mtu': 9000,
|
'mtu': 9000,
|
||||||
'disable_offloading': False
|
'disable_offloading': False
|
||||||
},
|
}
|
||||||
}]
|
}
|
||||||
|
|
||||||
def check_node_iface_mtu(self, node, iface, mtu):
|
def check_node_iface_mtu(self, node, iface, mtu):
|
||||||
"""Check mtu on environment node network interface."""
|
"""Check mtu on environment node network interface."""
|
||||||
|
@ -295,9 +294,10 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
for node in slave_nodes:
|
for node in slave_nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.set_mtu(node['id'],
|
||||||
node['id'], self.interfaces,
|
self.iface_update['name'], mtu=9000)
|
||||||
override_ifaces_params=self.interfaces_update)
|
self.fuel_web.disable_offloading(node['id'],
|
||||||
|
self.iface_update['name'])
|
||||||
|
|
||||||
self.show_step(6)
|
self.show_step(6)
|
||||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||||
|
@ -310,13 +310,13 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
for iface in self.interfaces_update:
|
asserts.assert_true(
|
||||||
asserts.assert_true(
|
self.check_node_iface_mtu(
|
||||||
self.check_node_iface_mtu(remote, iface['name'], 9000),
|
remote, self.iface_update['name'], 9000),
|
||||||
"MTU on {0} is not 9000. "
|
"MTU on {0} is not 9000. Actual value: {1}".format(
|
||||||
"Actual value: {1}".format(
|
remote.host,
|
||||||
remote.host,
|
self.get_node_iface(remote, self.iface_update['name'])
|
||||||
self.get_node_iface(remote, iface['name'])))
|
))
|
||||||
|
|
||||||
self.show_step(9)
|
self.show_step(9)
|
||||||
self.check_mtu_size_between_instances(mtu_offset=0)
|
self.check_mtu_size_between_instances(mtu_offset=0)
|
||||||
|
@ -376,9 +376,10 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
for node in slave_nodes:
|
for node in slave_nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.set_mtu(node['id'],
|
||||||
node['id'], self.interfaces,
|
self.iface_update['name'], mtu=9000)
|
||||||
override_ifaces_params=self.interfaces_update)
|
self.fuel_web.disable_offloading(node['id'],
|
||||||
|
self.iface_update['name'])
|
||||||
|
|
||||||
self.show_step(6)
|
self.show_step(6)
|
||||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||||
|
@ -391,13 +392,13 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
for iface in self.interfaces_update:
|
asserts.assert_true(
|
||||||
asserts.assert_true(
|
self.check_node_iface_mtu(
|
||||||
self.check_node_iface_mtu(remote, iface['name'], 9000),
|
remote, self.iface_update['name'], 9000),
|
||||||
"MTU on {0} is not 9000. "
|
"MTU on {0} is not 9000. Actual value: {1}".format(
|
||||||
"Actual value: {1}".format(
|
remote.host,
|
||||||
remote.host,
|
self.get_node_iface(remote, self.iface_update['name'])
|
||||||
self.get_node_iface(remote, iface['name'])))
|
))
|
||||||
|
|
||||||
self.show_step(9)
|
self.show_step(9)
|
||||||
self.check_mtu_size_between_instances(mtu_offset=50)
|
self.check_mtu_size_between_instances(mtu_offset=50)
|
||||||
|
@ -458,10 +459,10 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
for node in slave_nodes:
|
for node in slave_nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.set_mtu(node['id'],
|
||||||
node['id'],
|
self.iface_update['name'], mtu=9000)
|
||||||
interfaces_dict=deepcopy(self.interfaces),
|
self.fuel_web.disable_offloading(node['id'],
|
||||||
override_ifaces_params=self.interfaces_update)
|
self.iface_update['name'])
|
||||||
|
|
||||||
self.show_step(6)
|
self.show_step(6)
|
||||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||||
|
@ -474,13 +475,13 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
for iface in self.interfaces_update:
|
asserts.assert_true(
|
||||||
asserts.assert_true(
|
self.check_node_iface_mtu(
|
||||||
self.check_node_iface_mtu(remote, iface['name'], 9000),
|
remote, self.iface_update['name'], 9000),
|
||||||
"MTU on {0} is not 9000. "
|
"MTU on {0} is not 9000. Actual value: {1}".format(
|
||||||
"Actual value: {1}".format(
|
remote.host,
|
||||||
remote.host,
|
self.get_node_iface(remote, self.iface_update['name'])
|
||||||
self.get_node_iface(remote, iface['name'])))
|
))
|
||||||
|
|
||||||
self.show_step(9)
|
self.show_step(9)
|
||||||
self.check_mtu_size_between_instances(mtu_offset=0, diff_net=True)
|
self.check_mtu_size_between_instances(mtu_offset=0, diff_net=True)
|
||||||
|
@ -541,10 +542,10 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
for node in slave_nodes:
|
for node in slave_nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.set_mtu(node['id'],
|
||||||
node['id'],
|
self.iface_update['name'], mtu=9000)
|
||||||
interfaces_dict=deepcopy(self.interfaces),
|
self.fuel_web.disable_offloading(node['id'],
|
||||||
override_ifaces_params=self.interfaces_update)
|
self.iface_update['name'])
|
||||||
|
|
||||||
self.show_step(6)
|
self.show_step(6)
|
||||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||||
|
@ -557,13 +558,13 @@ class TestJumboFrames(base_test_case.TestBasic):
|
||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
for iface in self.interfaces_update:
|
asserts.assert_true(
|
||||||
asserts.assert_true(
|
self.check_node_iface_mtu(
|
||||||
self.check_node_iface_mtu(remote, iface['name'], 9000),
|
remote, self.iface_update['name'], 9000),
|
||||||
"MTU on {0} is not 9000. "
|
"MTU on {0} is not 9000. Actual value: {1}".format(
|
||||||
"Actual value: {1}".format(
|
remote.host,
|
||||||
remote.host,
|
self.get_node_iface(remote, self.iface_update['name'])
|
||||||
self.get_node_iface(remote, iface['name'])))
|
))
|
||||||
|
|
||||||
self.show_step(9)
|
self.show_step(9)
|
||||||
self.check_mtu_size_between_instances(mtu_offset=50, diff_net=True)
|
self.check_mtu_size_between_instances(mtu_offset=50, diff_net=True)
|
||||||
|
|
|
@ -36,20 +36,14 @@ class TestOffloading(TestBasic):
|
||||||
settings.iface_alias('eth4'): ['storage'],
|
settings.iface_alias('eth4'): ['storage'],
|
||||||
}
|
}
|
||||||
|
|
||||||
offloadings_1 = ['generic-receive-offload',
|
offloadings_1 = {'generic-receive-offload': False,
|
||||||
'generic-segmentation-offload',
|
'generic-segmentation-offload': False,
|
||||||
'tcp-segmentation-offload',
|
'tcp-segmentation-offload': False,
|
||||||
'large-receive-offload']
|
'large-receive-offload': False}
|
||||||
|
|
||||||
offloadings_2 = ['rx-all',
|
offloadings_2 = {'rx-all': True,
|
||||||
'rx-vlan-offload',
|
'rx-vlan-offload': True,
|
||||||
'tx-vlan-offload']
|
'tx-vlan-offload': True}
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def prepare_offloading_modes(interface, types, state):
|
|
||||||
return [{'name': interface,
|
|
||||||
'offloading_modes': [{'name': name, 'state': state,
|
|
||||||
'sub': []} for name in types]}]
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_offloading_modes(nodes, offloadings, iface, state):
|
def check_offloading_modes(nodes, offloadings, iface, state):
|
||||||
|
@ -109,31 +103,32 @@ class TestOffloading(TestBasic):
|
||||||
nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
|
|
||||||
self.show_step(4)
|
self.show_step(4)
|
||||||
offloadings_1 = []
|
offloadings_1 = {}
|
||||||
offloadings_2 = []
|
offloadings_2 = {}
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
|
modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
|
||||||
for name in self.offloadings_1:
|
for name in self.offloadings_1:
|
||||||
if name in modes and name not in offloadings_1:
|
if name in modes and name not in offloadings_1:
|
||||||
offloadings_1.append(name)
|
offloadings_1[name] = self.offloadings_1[name]
|
||||||
modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
|
modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
|
||||||
for name in self.offloadings_2:
|
for name in self.offloadings_2:
|
||||||
if name in modes and name not in offloadings_2:
|
if name in modes and name not in offloadings_2:
|
||||||
offloadings_2.append(name)
|
offloadings_2[name] = self.offloadings_2[name]
|
||||||
|
|
||||||
assert_true(len(offloadings_1) > 0, "No types for disable offloading")
|
assert_true(len(offloadings_1) > 0, "No types for disable offloading")
|
||||||
assert_true(len(offloadings_2) > 0, "No types for enable offloading")
|
assert_true(len(offloadings_2) > 0, "No types for enable offloading")
|
||||||
|
|
||||||
modes = self.prepare_offloading_modes(iface1, offloadings_1, False)
|
offloadings = {
|
||||||
modes += self.prepare_offloading_modes(iface2, offloadings_2, True)
|
iface1: offloadings_1,
|
||||||
|
iface2: offloadings_2
|
||||||
|
}
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.update_node_networks(
|
||||||
node['id'],
|
node['id'],
|
||||||
interfaces_dict=deepcopy(self.interfaces))
|
interfaces_dict=deepcopy(self.interfaces))
|
||||||
for offloading in modes:
|
for offloading in offloadings:
|
||||||
self.fuel_web.update_offloads(
|
self.fuel_web.update_offloads(
|
||||||
node['id'], deepcopy(offloading), offloading['name'])
|
node['id'], offloadings[offloading], offloading)
|
||||||
|
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
self.fuel_web.verify_network(cluster_id)
|
self.fuel_web.verify_network(cluster_id)
|
||||||
|
@ -202,31 +197,32 @@ class TestOffloading(TestBasic):
|
||||||
nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
|
|
||||||
self.show_step(4)
|
self.show_step(4)
|
||||||
offloadings_1 = []
|
offloadings_1 = {}
|
||||||
offloadings_2 = []
|
offloadings_2 = {}
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
|
modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
|
||||||
for name in self.offloadings_1:
|
for name in self.offloadings_1:
|
||||||
if name in modes and name not in offloadings_1:
|
if name in modes and name not in offloadings_1:
|
||||||
offloadings_1.append(name)
|
offloadings_1[name] = self.offloadings_1[name]
|
||||||
modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
|
modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
|
||||||
for name in self.offloadings_2:
|
for name in self.offloadings_2:
|
||||||
if name in modes and name not in offloadings_2:
|
if name in modes and name not in offloadings_2:
|
||||||
offloadings_2.append(name)
|
offloadings_2[name] = self.offloadings_2[name]
|
||||||
|
|
||||||
assert_true(len(offloadings_1) > 0, "No types for disable offloading")
|
assert_true(len(offloadings_1) > 0, "No types for disable offloading")
|
||||||
assert_true(len(offloadings_2) > 0, "No types for enable offloading")
|
assert_true(len(offloadings_2) > 0, "No types for enable offloading")
|
||||||
|
|
||||||
modes = self.prepare_offloading_modes(iface1, offloadings_1, False)
|
offloadings = {
|
||||||
modes += self.prepare_offloading_modes(iface2, offloadings_2, True)
|
iface1: offloadings_1,
|
||||||
|
iface2: offloadings_2
|
||||||
|
}
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
self.fuel_web.update_node_networks(
|
self.fuel_web.update_node_networks(
|
||||||
node['id'],
|
node['id'],
|
||||||
interfaces_dict=deepcopy(self.interfaces))
|
interfaces_dict=deepcopy(self.interfaces))
|
||||||
for offloading in modes:
|
for offloading in offloadings:
|
||||||
self.fuel_web.update_offloads(
|
self.fuel_web.update_offloads(
|
||||||
node['id'], deepcopy(offloading), offloading['name'])
|
node['id'], offloadings[offloading], offloading)
|
||||||
|
|
||||||
self.show_step(5)
|
self.show_step(5)
|
||||||
self.fuel_web.verify_network(cluster_id)
|
self.fuel_web.verify_network(cluster_id)
|
||||||
|
|
Loading…
Reference in New Issue