Exemple #1
0
 def check_offloading_modes(nodes, offloadings, iface, state):
     for node in nodes:
         for name in offloadings:
             result = check_offload(node['ip'], iface, name)
             assert_equal(result, state,
                          "Offload type {0} is {1} on {2}".format(
                              name, result, node['name']))
Exemple #2
0
    def offloading_bond_neutron_vlan(self):
        """Verify offloading types for the logical bonded interfaces and
        neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Configure offloading modes for bonded interfaces
            5. Setup offloading types
            6. Run network verification
            7. Deploy the cluster
            8. Run network verification
            9. Verify offloading types for the bonded interfaces
            10. Run OSTF

        Duration 60m
        Snapshot offloading_bond_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE_HA,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            })

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            })

        self.show_step(4)
        bond0_interfaces = self.get_bond_interfaces(self.BOND_CONFIG, 'bond0')
        offloading_modes = self.prepare_offloading_modes(
            ['bond0'], self.bond0_offloading_types, 'false')
        bond1_interfaces = self.get_bond_interfaces(self.BOND_CONFIG, 'bond1')
        offloading_modes += self.prepare_offloading_modes(
            ['bond1'], self.bond1_offloading_types, 'true')

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
        self.show_step(5)
        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.INTERFACES),
                raw_data=deepcopy(self.BOND_CONFIG))
            for offloading in offloading_modes:
                self.fuel_web.update_offloads(node['id'], deepcopy(offloading),
                                              offloading['name'])

        self.show_step(6)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(7)
        self.fuel_web.deploy_cluster_wait(cluster_id)

        self.show_step(8)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(9)
        for node in nodes:
            for eth in bond0_interfaces:
                for name in self.bond0_offloading_types:
                    with self.env.d_env.get_ssh_to_remote(node['ip']) as host:
                        result = check_offload(host, eth, name)
                        assert_equal(
                            result, 'off',
                            "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                                name, result, node['id'], eth))
            for eth in bond1_interfaces:
                for name in self.bond1_offloading_types:
                    with self.env.d_env.get_ssh_to_remote(node['ip']) as host:
                        result = check_offload(host, eth, name)
                        assert_equal(
                            result, 'on',
                            "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                                name, result, node['id'], eth))

        self.show_step(10)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_bond_neutron_vlan")
Exemple #3
0
    def offloading_neutron_vlan(self):
        """Deploy cluster with specific offload modes and neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Setup offloading types
            5. Run network verification
            6. Deploy the cluster
            7. Run network verification
            8. Verify offloading modes on nodes
            9. Run OSTF

        Duration 30m
        Snapshot offloading_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            }
        )

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            }
        )

        iface1 = settings.iface_alias('eth3')
        iface2 = settings.iface_alias('eth2')

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)

        self.show_step(4)
        offloadings_1 = []
        offloadings_2 = []
        for node in nodes:
            modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
            for name in self.offloadings_1:
                if name in modes and name not in offloadings_1:
                    offloadings_1.append(name)
            modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
            for name in self.offloadings_2:
                if name in modes and name not in offloadings_2:
                    offloadings_2.append(name)

        assert_true(len(offloadings_1) > 0, "No types for disable offloading")
        assert_true(len(offloadings_2) > 0, "No types for enable offloading")

        modes = self.prepare_offloading_modes(iface1, offloadings_1, False)
        modes += self.prepare_offloading_modes(iface2, offloadings_2, True)

        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.interfaces))
            for offloading in modes:
                self.fuel_web.update_offloads(
                    node['id'], deepcopy(offloading), offloading['name'])

        self.show_step(5)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(6)
        self.fuel_web.deploy_cluster_wait(cluster_id)
        self.show_step(7)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(8)
        for node in nodes:
            with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
                for name in offloadings_1:
                    result = check_offload(remote, iface1, name)
                    assert_equal(result, "off",
                                 "Offload type {0} is {1} on {2}".format(
                                         name, result, node['name']))
                for name in offloadings_2:
                    result = check_offload(remote, iface2, name)
                    assert_equal(result, "on",
                                 "Offload type {0} is {1} on {2}".format(
                                         name, result, node['name']))

        self.show_step(9)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_neutron_vlan")
    def offloading_bond_neutron_vlan(self):
        """Verify offloading types for the logical bonded interfaces and
        neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Configure offloading modes for bonded interfaces
            5. Setup offloading types
            6. Run network verification
            7. Deploy the cluster
            8. Run network verification
            9. Verify offloading types for the bonded interfaces
            10. Run OSTF

        Duration 60m
        Snapshot offloading_bond_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE_HA,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            }
        )

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            }
        )

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)

        self.show_step(4)
        bond0 = self.get_bond_interfaces(self.BOND_CONFIG, 'bond0')
        bond1 = self.get_bond_interfaces(self.BOND_CONFIG, 'bond1')
        offloadings_1 = []
        offloadings_2 = []
        for node in nodes:
            modes = self.fuel_web.get_offloading_modes(node['id'], bond0)
            for name in self.offloadings_1:
                if name in modes and name not in offloadings_1:
                    offloadings_1.append(name)
            modes = self.fuel_web.get_offloading_modes(node['id'], bond1)
            for name in self.offloadings_2:
                if name in modes and name not in offloadings_2:
                    offloadings_2.append(name)

        assert_true(len(offloadings_1) > 0, "No types for disable offloading")
        assert_true(len(offloadings_2) > 0, "No types for enable offloading")

        modes = self.prepare_offloading_modes(['bond0'], offloadings_1, False)
        modes += self.prepare_offloading_modes(['bond1'], offloadings_2, True)

        self.show_step(5)
        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.INTERFACES),
                raw_data=deepcopy(self.BOND_CONFIG))
            for offloading in modes:
                self.fuel_web.update_offloads(
                    node['id'], deepcopy(offloading), offloading['name'])

        self.show_step(6)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(7)
        self.fuel_web.deploy_cluster_wait(cluster_id)

        self.show_step(8)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(9)
        for node in nodes:
            for eth in bond0:
                for name in offloadings_1:
                    result = check_offload(node['ip'], eth, name)
                    assert_equal(
                        result, 'off',
                        "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                            name, result, node['id'], eth))
            for eth in bond1:
                for name in offloadings_2:
                    result = check_offload(node['ip'], eth, name)
                    assert_equal(
                        result, 'on',
                        "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                            name, result, node['id'], eth))

        self.show_step(10)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_bond_neutron_vlan")
    def offloading_bond_neutron_vxlan(self):
        """Verify setting offloading types for the logical bonded interfaces
        and neutron VXLAN

        Scenario:
            1. Create cluster with neutron VXLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Configure offloading modes for bonded interfaces
            5. Setup offloading types
            6. Run network verification
            7. Deploy the cluster
            8. Run network verification
            9. Verify offloading types for the bonded interfaces
            10. Run OSTF

        Duration 60m
        Snapshot offloading_bond_neutron_vxlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE_HA,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['tun'],
            }
        )

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            }
        )

        self.show_step(4)
        bond0_interfaces = self.get_bond_interfaces(self.BOND_CONFIG, 'bond0')
        offloading_modes = self.prepare_offloading_modes(
            bond0_interfaces, self.bond0_offloading_types, 'false')
        bond1_interfaces = self.get_bond_interfaces(self.BOND_CONFIG, 'bond1')
        offloading_modes += self.prepare_offloading_modes(
            bond1_interfaces, self.bond1_offloading_types, 'true')

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
        self.show_step(5)
        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.INTERFACES),
                raw_data=deepcopy(self.BOND_CONFIG))
            for offloading in offloading_modes:
                self.fuel_web.update_offloads(
                    node['id'], deepcopy(offloading), offloading['name'])

        self.show_step(6)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(7)
        self.fuel_web.deploy_cluster_wait(cluster_id)

        self.show_step(8)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(9)
        for node in nodes:
            for eth in bond0_interfaces:
                for name in self.bond0_offloading_types:
                    with self.env.d_env.get_ssh_to_remote(node['ip']) as host:
                        result = check_offload(host, eth, name)
                        assert_equal(
                            result, 'off',
                            "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                                name, result, node['id'], eth))
            for eth in bond1_interfaces:
                for name in self.bond1_offloading_types:
                    with self.env.d_env.get_ssh_to_remote(node['ip']) as host:
                        result = check_offload(host, eth, name)
                        assert_equal(
                            result, 'on',
                            "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                                name, result, node['id'], eth))

        self.show_step(10)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_bond_neutron_vxlan")
    def offloading_neutron_vlan(self):
        """Deploy cluster with specific offload modes and neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Setup offloading types
            5. Run network verification
            6. Deploy the cluster
            7. Run network verification
            8. Verify offloading modes on nodes
            9. Run OSTF

        Duration 30m
        Snapshot offloading_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            }
        )

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            }
        )

        iface1 = settings.iface_alias('eth3')
        iface2 = settings.iface_alias('eth2')

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)

        self.show_step(4)
        offloadings_1 = []
        offloadings_2 = []
        for node in nodes:
            modes = self.fuel_web.get_offloading_modes(node['id'], [iface1])
            for name in self.offloadings_1:
                if name in modes and name not in offloadings_1:
                    offloadings_1.append(name)
            modes = self.fuel_web.get_offloading_modes(node['id'], [iface2])
            for name in self.offloadings_2:
                if name in modes and name not in offloadings_2:
                    offloadings_2.append(name)

        assert_true(len(offloadings_1) > 0, "No types for disable offloading")
        assert_true(len(offloadings_2) > 0, "No types for enable offloading")

        modes = self.prepare_offloading_modes(iface1, offloadings_1, False)
        modes += self.prepare_offloading_modes(iface2, offloadings_2, True)

        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.interfaces))
            for offloading in modes:
                self.fuel_web.update_offloads(
                    node['id'], deepcopy(offloading), offloading['name'])

        self.show_step(5)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(6)
        self.fuel_web.deploy_cluster_wait(cluster_id)
        self.show_step(7)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(8)
        for node in nodes:
            for name in offloadings_1:
                result = check_offload(node['ip'], iface1, name)
                assert_equal(result, "off",
                             "Offload type {0} is {1} on {2}".format(
                                     name, result, node['name']))
            for name in offloadings_2:
                result = check_offload(node['ip'], iface2, name)
                assert_equal(result, "on",
                             "Offload type {0} is {1} on {2}".format(
                                     name, result, node['name']))

        self.show_step(9)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_neutron_vlan")
    def offloading_neutron_vlan(self):
        """Deploy cluster with specific offload modes and neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Setup offloading types
            5. Run network verification
            6. Deploy the cluster
            7. Run network verification
            8. Verify offloading modes on nodes
            9. Run OSTF

        Duration 30m
        Snapshot offloading_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(name=self.__class__.__name__,
                                                  mode=DEPLOYMENT_MODE,
                                                  settings={
                                                      "net_provider":
                                                      'neutron',
                                                      "net_segment_type":
                                                      'vlan',
                                                  })

        interfaces = {
            iface_alias('eth1'): ['public'],
            iface_alias('eth2'): ['private'],
            iface_alias('eth3'): ['management'],
            iface_alias('eth4'): ['storage'],
        }

        offloading_modes = [{
            'name':
            iface_alias('eth1'),
            'offloading_modes': [{
                'state': 'true',
                'name': 'rx-vlan-offload',
                'sub': []
            }, {
                'state': 'true',
                'name': 'tx-vlan-offload',
                'sub': []
            }]
        }, {
            'name':
            iface_alias('eth2'),
            'offloading_modes': [{
                'state': 'false',
                'name': 'large-receive-offload',
                'sub': []
            }]
        }]

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            })

        slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
        self.show_step(4)
        for node in slave_nodes:
            self.fuel_web.update_node_networks(node['id'],
                                               deepcopy(interfaces))
            for offloading in offloading_modes:
                self.fuel_web.update_offloads(node['id'], deepcopy(offloading),
                                              offloading['name'])
        self.show_step(5)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(6)
        self.fuel_web.deploy_cluster_wait(cluster_id)
        self.show_step(7)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(8)
        nodes = [
            self.fuel_web.get_nailgun_node_by_name(node)
            for node in ['slave-01', 'slave-02', 'slave-03']
        ]
        for node in nodes:
            with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
                logger.info("Verify Offload types")

                result = check_offload(remote, iface_alias('eth1'),
                                       'rx-vlan-offload')
                assert_equal(
                    result, "on",
                    "Offload type {0} is {1} on remote host".format(
                        'rx-vlan-offload', result))

                result = check_offload(remote, iface_alias('eth1'),
                                       'tx-vlan-offload')
                assert_equal(
                    result, "on",
                    "Offload type {0} is {1} on remote host".format(
                        'tx-vlan-offload', result))

                result = check_offload(remote, iface_alias('eth2'),
                                       'large-receive-offload')
                assert_equal(
                    result, "off",
                    "Offload type {0} is {1} on remote host".format(
                        'large-receive-offload', result))

        self.show_step(9)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_neutron_vlan")
 def check_offloading_modes(nodes, offloadings, iface, state):
     for node in nodes:
         for name in offloadings:
             result = check_offload(node["ip"], iface, name)
             assert_equal(result, state, "Offload type {0} is {1} on {2}".format(name, result, node["name"]))
    def offloading_neutron_vlan(self):
        """Deploy cluster with specific offload modes and neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Setup offloading types
            5. Run network verification
            6. Deploy the cluster
            7. Run network verification
            8. Verify offloading modes on nodes
            9. Run OSTF

        Duration 30m
        Snapshot offloading_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=DEPLOYMENT_MODE,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": 'vlan',
            }
        )

        interfaces = {
            iface_alias('eth1'): ['public'],
            iface_alias('eth2'): ['private'],
            iface_alias('eth3'): ['management'],
            iface_alias('eth4'): ['storage'],
        }

        offloading_modes = [{
            'name': iface_alias('eth1'),
            'offloading_modes': [{
                'state': 'true',
                'name': 'rx-vlan-offload',
                'sub': []}, {
                'state': 'true',
                'name': 'tx-vlan-offload',
                'sub': []}]}, {
            'name': iface_alias('eth2'),
            'offloading_modes': [{
                'state': 'false',
                'name': 'large-receive-offload',
                'sub': []}]}]

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(
            cluster_id, {
                'slave-01': ['controller'],
                'slave-02': ['compute'],
                'slave-03': ['cinder']
            }
        )

        slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
        self.show_step(4)
        for node in slave_nodes:
            self.fuel_web.update_node_networks(node['id'],
                                               deepcopy(interfaces))
            for offloading in offloading_modes:
                self.fuel_web.update_offloads(
                    node['id'], deepcopy(offloading), offloading['name'])
        self.show_step(5)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(6)
        self.fuel_web.deploy_cluster_wait(cluster_id)
        self.show_step(7)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(8)
        nodes = [self.fuel_web.get_nailgun_node_by_name(node)
                 for node in ['slave-01', 'slave-02', 'slave-03']]
        for node in nodes:
            with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
                logger.info("Verify Offload types")

                result = check_offload(remote,
                                       iface_alias('eth1'),
                                       'rx-vlan-offload')
                assert_equal(result, "on",
                             "Offload type {0} is {1} on remote host"
                             .format('rx-vlan-offload', result))

                result = check_offload(remote,
                                       iface_alias('eth1'),
                                       'tx-vlan-offload')
                assert_equal(result, "on",
                             "Offload type {0} is {1} on remote host"
                             .format('tx-vlan-offload', result))

                result = check_offload(remote,
                                       iface_alias('eth2'),
                                       'large-receive-offload')
                assert_equal(result, "off",
                             "Offload type {0} is {1} on remote host"
                             .format('large-receive-offload', result))

        self.show_step(9)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_neutron_vlan")
Exemple #10
0
    def offloading_bond_neutron_vlan(self):
        """Verify offloading types for the logical bonded interfaces and
        neutron VLAN

        Scenario:
            1. Create cluster with neutron VLAN
            2. Add 1 node with controller role
            3. Add 1 node with compute role and 1 node with cinder role
            4. Configure offloading modes for bonded interfaces
            5. Setup offloading types
            6. Run network verification
            7. Deploy the cluster
            8. Run network verification
            9. Verify offloading types for the bonded interfaces
            10. Run OSTF

        Duration 60m
        Snapshot offloading_bond_neutron_vlan

        """
        self.env.revert_snapshot("ready_with_3_slaves")

        self.show_step(1, initialize=True)
        cluster_id = self.fuel_web.create_cluster(
            name=self.__class__.__name__,
            mode=settings.DEPLOYMENT_MODE_HA,
            settings={
                "net_provider": 'neutron',
                "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            })

        self.show_step(2)
        self.show_step(3)
        self.fuel_web.update_nodes(cluster_id, {
            'slave-01': ['controller'],
            'slave-02': ['compute'],
            'slave-03': ['cinder']
        },
                                   update_interfaces=False)

        nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)

        self.show_step(4)
        bond0 = self.get_bond_interfaces(self.bond_config, 'bond0')
        bond1 = self.get_bond_interfaces(self.bond_config, 'bond1')
        offloadings_1 = {}
        offloadings_2 = {}
        for node in nodes:
            modes = self.fuel_web.get_offloading_modes(node['id'], bond0)
            for name in self.offloadings_1:
                if name in modes and name not in offloadings_1:
                    offloadings_1[name] = self.offloadings_1[name]
            modes = self.fuel_web.get_offloading_modes(node['id'], bond1)
            for name in self.offloadings_2:
                if name in modes and name not in offloadings_2:
                    offloadings_2[name] = self.offloadings_2[name]

        assert_true(len(offloadings_1) > 0, "No types for disable offloading")
        assert_true(len(offloadings_2) > 0, "No types for enable offloading")

        offloadings = {'bond0': offloadings_1, 'bond1': offloadings_2}

        self.show_step(5)
        for node in nodes:
            self.fuel_web.update_node_networks(
                node['id'],
                interfaces_dict=deepcopy(self.INTERFACES),
                raw_data=deepcopy(self.bond_config))
            for offloading in offloadings:
                self.fuel_web.update_offloads(node['id'],
                                              offloadings[offloading],
                                              offloading)

        self.show_step(6)
        self.fuel_web.verify_network(cluster_id)
        self.show_step(7)
        self.fuel_web.deploy_cluster_wait(cluster_id)

        self.show_step(8)
        self.fuel_web.verify_network(cluster_id)

        self.show_step(9)
        for node in nodes:
            for eth in bond0:
                for name in offloadings_1:
                    result = check_offload(node['ip'], eth, name)
                    assert_equal(
                        result, 'off',
                        "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                            name, result, node['id'], eth))
            for eth in bond1:
                for name in offloadings_2:
                    result = check_offload(node['ip'], eth, name)
                    assert_equal(
                        result, 'on',
                        "Offload type '{0}': '{1}' - node-{2}, {3}".format(
                            name, result, node['id'], eth))

        self.show_step(10)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("offloading_bond_neutron_vlan")