Merge "Test adding nodes to cloud with network template"
This commit is contained in:
commit
5dd553cfb1
333
fuelweb_test/network_templates/cinder_add_nodes.yaml
Normal file
333
fuelweb_test/network_templates/cinder_add_nodes.yaml
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
adv_net_template:
|
||||||
|
default:
|
||||||
|
nic_mapping:
|
||||||
|
default:
|
||||||
|
if1: eth0 # admin
|
||||||
|
if2: eth1 # public
|
||||||
|
if3: eth3 # management (vlan 101) storage (vlan 102) & private (vlan 103)
|
||||||
|
if4: eth4 # other networks (vlan 201-299)
|
||||||
|
if5: eth2 # fake bond
|
||||||
|
node-4:
|
||||||
|
if1: eth0 # admin
|
||||||
|
if2: eth2 # public
|
||||||
|
if3: eth4 # management (vlan 101) storage (vlan 102) & private (vlan 103)
|
||||||
|
if4: eth3 # other networks (vlan 201-299)
|
||||||
|
if5: eth1 # fake bond
|
||||||
|
templates_for_node_role:
|
||||||
|
controller:
|
||||||
|
- public
|
||||||
|
- private
|
||||||
|
- storage
|
||||||
|
- common
|
||||||
|
- custom
|
||||||
|
compute:
|
||||||
|
- common
|
||||||
|
- private
|
||||||
|
- storage
|
||||||
|
- custom
|
||||||
|
cinder:
|
||||||
|
- common
|
||||||
|
- storage
|
||||||
|
- custom
|
||||||
|
network_assignments:
|
||||||
|
storage:
|
||||||
|
ep: br-storage
|
||||||
|
private:
|
||||||
|
ep: br-prv
|
||||||
|
public:
|
||||||
|
ep: br-ex
|
||||||
|
management:
|
||||||
|
ep: br-mgmt
|
||||||
|
fuelweb_admin:
|
||||||
|
ep: br-fw-admin
|
||||||
|
fake:
|
||||||
|
ep: br-fake
|
||||||
|
mongo:
|
||||||
|
ep: br-mongo
|
||||||
|
keystone:
|
||||||
|
ep: br-keystone
|
||||||
|
neutron-api:
|
||||||
|
ep: br-neutronapi
|
||||||
|
neutron-mesh:
|
||||||
|
ep: br-neutronmesh
|
||||||
|
swift:
|
||||||
|
ep: br-swift
|
||||||
|
sahara:
|
||||||
|
ep: br-sahara
|
||||||
|
ceilometer:
|
||||||
|
ep: br-ceilometer
|
||||||
|
cinder:
|
||||||
|
ep: br-cinder
|
||||||
|
glance:
|
||||||
|
ep: br-glance
|
||||||
|
heat:
|
||||||
|
ep: br-heat
|
||||||
|
nova:
|
||||||
|
ep: br-nova
|
||||||
|
nova-migration:
|
||||||
|
ep: br-novamigr
|
||||||
|
murano:
|
||||||
|
ep: br-murano
|
||||||
|
horizon:
|
||||||
|
ep: br-horizon
|
||||||
|
messaging:
|
||||||
|
ep: br-messaging
|
||||||
|
corosync:
|
||||||
|
ep: br-corosync
|
||||||
|
memcache:
|
||||||
|
ep: br-memcache
|
||||||
|
database:
|
||||||
|
ep: br-database
|
||||||
|
cinder-iscsi:
|
||||||
|
ep: br-cinderiscsi
|
||||||
|
swift-replication:
|
||||||
|
ep: br-swiftrepl
|
||||||
|
network_scheme:
|
||||||
|
storage:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-storage
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-storage
|
||||||
|
name: <% if3 %>.102
|
||||||
|
endpoints:
|
||||||
|
- br-storage
|
||||||
|
roles:
|
||||||
|
storage: br-storage
|
||||||
|
ceph/public: br-storage
|
||||||
|
private:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-prv
|
||||||
|
provider: ovs
|
||||||
|
- action: add-br
|
||||||
|
name: br-aux
|
||||||
|
- action: add-patch
|
||||||
|
bridges:
|
||||||
|
- br-prv
|
||||||
|
- br-aux
|
||||||
|
provider: ovs
|
||||||
|
mtu: 65000
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-aux
|
||||||
|
name: <% if3 %>.103
|
||||||
|
endpoints:
|
||||||
|
- br-prv
|
||||||
|
roles:
|
||||||
|
neutron/private: br-prv
|
||||||
|
public:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-ex
|
||||||
|
- action: add-br
|
||||||
|
name: br-floating
|
||||||
|
provider: ovs
|
||||||
|
- action: add-patch
|
||||||
|
bridges:
|
||||||
|
- br-floating
|
||||||
|
- br-ex
|
||||||
|
provider: ovs
|
||||||
|
mtu: 65000
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-ex
|
||||||
|
name: <% if2 %>
|
||||||
|
endpoints:
|
||||||
|
- br-ex
|
||||||
|
roles:
|
||||||
|
public/vip: br-ex
|
||||||
|
neutron/floating: br-floating
|
||||||
|
ex: br-ex
|
||||||
|
common:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-fw-admin
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-fw-admin
|
||||||
|
name: <% if1 %>
|
||||||
|
- action: add-br
|
||||||
|
name: br-mgmt
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-mgmt
|
||||||
|
name: <% if3 %>.101
|
||||||
|
- action: add-br
|
||||||
|
name: br-fake
|
||||||
|
- action: add-bond
|
||||||
|
bridge: br-fake
|
||||||
|
name: lnx-bond0
|
||||||
|
interfaces:
|
||||||
|
- <% if5 %>
|
||||||
|
bond_properties:
|
||||||
|
mode: active-backup
|
||||||
|
interface_properties: {}
|
||||||
|
endpoints:
|
||||||
|
- br-fw-admin
|
||||||
|
- br-mgmt
|
||||||
|
- br-fake
|
||||||
|
roles:
|
||||||
|
admin/pxe: br-fw-admin
|
||||||
|
fw-admin: br-fw-admin
|
||||||
|
management: br-mgmt
|
||||||
|
mgmt/vip: br-mgmt
|
||||||
|
mgmt/api: br-mgmt
|
||||||
|
custom:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-mongo
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-mongo
|
||||||
|
name: <% if4 %>.201
|
||||||
|
- action: add-br
|
||||||
|
name: br-keystone
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-keystone
|
||||||
|
name: <% if4 %>.202
|
||||||
|
- action: add-br
|
||||||
|
name: br-neutronapi
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-neutronapi
|
||||||
|
name: <% if4 %>.203
|
||||||
|
- action: add-br
|
||||||
|
name: br-neutronmesh
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-neutronmesh
|
||||||
|
name: <% if4 %>.204
|
||||||
|
- action: add-br
|
||||||
|
name: br-swift
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-swift
|
||||||
|
name: <% if4 %>.205
|
||||||
|
- action: add-br
|
||||||
|
name: br-sahara
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-sahara
|
||||||
|
name: <% if4 %>.206
|
||||||
|
- action: add-br
|
||||||
|
name: br-ceilometer
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-ceilometer
|
||||||
|
name: <% if4 %>.207
|
||||||
|
- action: add-br
|
||||||
|
name: br-cinder
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-cinder
|
||||||
|
name: <% if4 %>.208
|
||||||
|
- action: add-br
|
||||||
|
name: br-glance
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-glance
|
||||||
|
name: <% if4 %>.209
|
||||||
|
- action: add-br
|
||||||
|
name: br-heat
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-heat
|
||||||
|
name: <% if4 %>.210
|
||||||
|
- action: add-br
|
||||||
|
name: br-nova
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-nova
|
||||||
|
name: <% if4 %>.211
|
||||||
|
- action: add-br
|
||||||
|
name: br-novamigr
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-novamigr
|
||||||
|
name: <% if4 %>.212
|
||||||
|
- action: add-br
|
||||||
|
name: br-murano
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-murano
|
||||||
|
name: <% if4 %>.213
|
||||||
|
- action: add-br
|
||||||
|
name: br-horizon
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-horizon
|
||||||
|
name: <% if4 %>.214
|
||||||
|
- action: add-br
|
||||||
|
name: br-messaging
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-messaging
|
||||||
|
name: <% if4 %>.215
|
||||||
|
- action: add-br
|
||||||
|
name: br-corosync
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-corosync
|
||||||
|
name: <% if4 %>.216
|
||||||
|
- action: add-br
|
||||||
|
name: br-memcache
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-memcache
|
||||||
|
name: <% if4 %>.217
|
||||||
|
- action: add-br
|
||||||
|
name: br-database
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-database
|
||||||
|
name: <% if4 %>.218
|
||||||
|
- action: add-br
|
||||||
|
name: br-cinderiscsi
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-cinderiscsi
|
||||||
|
name: <% if4 %>.219
|
||||||
|
- action: add-br
|
||||||
|
name: br-swiftrepl
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-swiftrepl
|
||||||
|
name: <% if4 %>.220
|
||||||
|
endpoints:
|
||||||
|
- br-mongo
|
||||||
|
- br-keystone
|
||||||
|
- br-neutronapi
|
||||||
|
- br-neutronmesh
|
||||||
|
- br-swift
|
||||||
|
- br-sahara
|
||||||
|
- br-ceilometer
|
||||||
|
- br-cinder
|
||||||
|
- br-glance
|
||||||
|
- br-heat
|
||||||
|
- br-nova
|
||||||
|
- br-novamigr
|
||||||
|
- br-murano
|
||||||
|
- br-horizon
|
||||||
|
- br-messaging
|
||||||
|
- br-corosync
|
||||||
|
- br-memcache
|
||||||
|
- br-database
|
||||||
|
- br-cinderiscsi
|
||||||
|
- br-swiftrepl
|
||||||
|
roles:
|
||||||
|
mongo/db: br-mongo
|
||||||
|
keystone/api: br-keystone
|
||||||
|
neutron/api: br-neutronapi
|
||||||
|
neutron/mesh: br-neutronmesh
|
||||||
|
swift/api: br-swift
|
||||||
|
sahara/api: br-sahara
|
||||||
|
ceilometer/api: br-ceilometer
|
||||||
|
cinder/api: br-cinder
|
||||||
|
glance/api: br-glance
|
||||||
|
heat/api: br-heat
|
||||||
|
nova/api: br-nova
|
||||||
|
nova/migration: br-novamigr
|
||||||
|
murano/api: br-murano
|
||||||
|
horizon: br-horizon
|
||||||
|
mgmt/messaging: br-messaging
|
||||||
|
mgmt/corosync: br-corosync
|
||||||
|
mgmt/memcache: br-memcache
|
||||||
|
mgmt/database: br-database
|
||||||
|
cinder/iscsi: br-cinderiscsi
|
||||||
|
swift/replication: br-swiftrepl
|
||||||
|
unused:
|
||||||
|
transformations:
|
||||||
|
- action: add-br
|
||||||
|
name: br-cephrepl
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-cephrepl
|
||||||
|
name: <% if4 %>.221
|
||||||
|
- action: add-br
|
||||||
|
name: br-cephrados
|
||||||
|
- action: add-port
|
||||||
|
bridge: br-cephrados
|
||||||
|
name: <% if4 %>.222
|
||||||
|
endpoints:
|
||||||
|
- br-cephrepl
|
||||||
|
- br-cephrados
|
||||||
|
roles:
|
||||||
|
ceph/replication: br-cephrepl
|
||||||
|
ceph/radosgw: br-cephrados
|
@ -12,6 +12,7 @@
|
|||||||
# 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 proboscis import TestProgram
|
||||||
from proboscis import SkipTest
|
from proboscis import SkipTest
|
||||||
from proboscis import test
|
from proboscis import test
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ class TestBasic(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.env = EnvironmentModel()
|
self.env = EnvironmentModel()
|
||||||
self.fuel_web = self.env.fuel_web
|
self.fuel_web = self.env.fuel_web
|
||||||
|
self.test_program = TestProgram()
|
||||||
|
|
||||||
def check_run(self, snapshot_name):
|
def check_run(self, snapshot_name):
|
||||||
"""Checks if run of current test is required.
|
"""Checks if run of current test is required.
|
||||||
@ -68,6 +70,32 @@ class TestBasic(object):
|
|||||||
logger.info("\n" + " " * 55 + "<<< {0}. (no step description "
|
logger.info("\n" + " " * 55 + "<<< {0}. (no step description "
|
||||||
"in scenario) {1}>>>".format(str(step), details_msg))
|
"in scenario) {1}>>>".format(str(step), details_msg))
|
||||||
|
|
||||||
|
def is_make_snapshot(self):
|
||||||
|
"""Check if the test 'test_name' is a dependency for other planned
|
||||||
|
tests (snapshot is required). If yes return True, if no - False.
|
||||||
|
|
||||||
|
:rtype: bool
|
||||||
|
"""
|
||||||
|
test_name = get_test_method_name()
|
||||||
|
tests = self.test_program.plan.tests
|
||||||
|
test_cases = [t for t in tests if t.entry.method.__name__ == test_name]
|
||||||
|
if len(test_cases) != 1:
|
||||||
|
logger.warning("Method 'is_make_snapshot' is called from function "
|
||||||
|
"which is not a test case: {0}".format(test_name))
|
||||||
|
return False
|
||||||
|
test_groups = set(test_cases[0].entry.info.groups)
|
||||||
|
dependent_tests = set()
|
||||||
|
dependent_groups = set()
|
||||||
|
for t in tests:
|
||||||
|
for func in t.entry.info.depends_on:
|
||||||
|
dependent_tests.add(func.__name__)
|
||||||
|
for group in t.entry.info.depends_on_groups:
|
||||||
|
dependent_groups.add(group)
|
||||||
|
if test_name in dependent_tests or \
|
||||||
|
test_groups & dependent_groups:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
@test
|
@test
|
||||||
class SetupEnvironment(TestBasic):
|
class SetupEnvironment(TestBasic):
|
||||||
|
@ -108,7 +108,8 @@ class TestNetworkTemplates(TestNetworkTemplatesBase):
|
|||||||
|
|
||||||
self.check_services_networks(cluster_id, network_template)
|
self.check_services_networks(cluster_id, network_template)
|
||||||
|
|
||||||
self.env.make_snapshot("deploy_cinder_net_tmpl")
|
self.env.make_snapshot("deploy_cinder_net_tmpl",
|
||||||
|
is_make=self.is_make_snapshot())
|
||||||
|
|
||||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||||
groups=["deploy_ceph_net_tmpl"])
|
groups=["deploy_ceph_net_tmpl"])
|
||||||
@ -195,3 +196,81 @@ class TestNetworkTemplates(TestNetworkTemplatesBase):
|
|||||||
self.check_services_networks(cluster_id, network_template)
|
self.check_services_networks(cluster_id, network_template)
|
||||||
|
|
||||||
self.env.make_snapshot("deploy_ceph_net_tmpl")
|
self.env.make_snapshot("deploy_ceph_net_tmpl")
|
||||||
|
|
||||||
|
@test(depends_on_groups=["deploy_cinder_net_tmpl"],
|
||||||
|
groups=["add_nodes_net_tmpl"])
|
||||||
|
@log_snapshot_after_test
|
||||||
|
def add_nodes_net_tmpl(self):
|
||||||
|
"""Add nodes to operational environment with network template
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Revert snapshot with deployed environment
|
||||||
|
2. Bootstrap 2 more slave nodes
|
||||||
|
3. Add 1 controller + cinder and 1 compute + cinder nodes
|
||||||
|
4. Upload 'cinder_add_nodes' network template with broken
|
||||||
|
network mapping for new nodes
|
||||||
|
5. Run network verification. Check it failed.
|
||||||
|
6. Upload 'cinder' network template'
|
||||||
|
7. Run network verification
|
||||||
|
8. Deploy cluster
|
||||||
|
9. Run network verification
|
||||||
|
10. Run health checks (OSTF)
|
||||||
|
11. Check L3 network configuration on slaves
|
||||||
|
12. Check that services are listening on their networks only
|
||||||
|
|
||||||
|
Duration 60m
|
||||||
|
Snapshot add_nodes_net_tmpl
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.env.revert_snapshot("deploy_cinder_net_tmpl")
|
||||||
|
|
||||||
|
self.env.bootstrap_nodes(self.env.d_env.nodes().slaves[3:5])
|
||||||
|
|
||||||
|
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||||
|
|
||||||
|
self.fuel_web.update_nodes(
|
||||||
|
cluster_id,
|
||||||
|
{
|
||||||
|
'slave-04': ['controller', 'cinder'],
|
||||||
|
'slave-05': ['compute', 'cinder'],
|
||||||
|
},
|
||||||
|
update_interfaces=False
|
||||||
|
)
|
||||||
|
|
||||||
|
network_template = get_network_template('cinder_add_nodes')
|
||||||
|
self.fuel_web.client.upload_network_template(
|
||||||
|
cluster_id=cluster_id, network_template=network_template)
|
||||||
|
self.fuel_web.verify_network(cluster_id, success=False)
|
||||||
|
|
||||||
|
network_template = get_network_template('cinder')
|
||||||
|
self.fuel_web.client.upload_network_template(
|
||||||
|
cluster_id=cluster_id, network_template=network_template)
|
||||||
|
networks = self.generate_networks_for_template(
|
||||||
|
template=network_template,
|
||||||
|
ip_network='10.200.0.0/16',
|
||||||
|
ip_prefixlen='24')
|
||||||
|
existing_networks = self.fuel_web.client.get_network_groups()
|
||||||
|
networks = self.create_custom_networks(networks, existing_networks)
|
||||||
|
|
||||||
|
logger.debug('Networks: {0}'.format(
|
||||||
|
self.fuel_web.client.get_network_groups()))
|
||||||
|
|
||||||
|
self.fuel_web.verify_network(cluster_id)
|
||||||
|
|
||||||
|
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||||
|
|
||||||
|
self.fuel_web.verify_network(cluster_id)
|
||||||
|
|
||||||
|
self.check_ipconfig_for_template(cluster_id, network_template,
|
||||||
|
networks)
|
||||||
|
self.check_services_networks(cluster_id, network_template)
|
||||||
|
|
||||||
|
self.fuel_web.run_ostf(cluster_id=cluster_id,
|
||||||
|
test_sets=['smoke', 'sanity',
|
||||||
|
'ha', 'tests_platform'])
|
||||||
|
self.check_ipconfig_for_template(cluster_id, network_template,
|
||||||
|
networks)
|
||||||
|
|
||||||
|
self.check_services_networks(cluster_id, network_template)
|
||||||
|
|
||||||
|
self.env.make_snapshot("add_nodes_net_tmpl")
|
||||||
|
Loading…
Reference in New Issue
Block a user