Source code for stepler.nova.tests.test_host_actions

"""
-----------------------
Nova host actions tests
-----------------------
"""

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

import pytest

from stepler import config


@pytest.mark.idempotent_id('2eb54a35-7218-4220-b376-8aa5f1b6f74f')
@pytest.mark.requires("computes_count >= 2")
[docs]def test_host_resources_info(cirros_image, flavor, network, subnet, server_steps, host_steps): """**Scenario:** Get info about resources' usage on nodes. **Setup:** #. Create cirros image #. Create flavor #. Create net and subnet **Steps:** #. Get resource info for node-1 and node-2 #. Create two servers on node-1 #. Get resource info for node-1 and check that resource usage is changed and project_id is present in results #. Get resource info for node-2 and check that resource usage is not changed #. Create two servers on node-2 #. Get resource info for node-1 and check that resource usage is not changed #. Get resource info for node-2 and check that resource usage is changed and project_id is present in results **Teardown:** #. Delete servers #. Delete net and subnet #. Delete flavor #. Delete cirros image """ hosts = [host for host in host_steps.get_hosts() if host.zone == 'nova'] host_1 = hosts[0] host_2 = hosts[1] usage_data_1 = host_steps.get_usage_data(host_1) usage_data_2 = host_steps.get_usage_data(host_2) servers_host_1 = server_steps.create_servers( count=2, image=cirros_image, flavor=flavor, networks=[network], availability_zone='nova:' + host_1.host_name, username=config.CIRROS_USERNAME) project_id = servers_host_1[0].tenant_id host_steps.check_host_usage_changing(host_1, usage_data_1, changed=True, project_id=project_id) host_steps.check_host_usage_changing(host_2, usage_data_2, changed=False) usage_data_1 = host_steps.get_usage_data(host_1) usage_data_2 = host_steps.get_usage_data(host_2) servers_host_2 = server_steps.create_servers( count=2, image=cirros_image, flavor=flavor, networks=[network], availability_zone='nova:' + host_2.host_name, username=config.CIRROS_USERNAME) project_id = servers_host_2[0].tenant_id host_steps.check_host_usage_changing(host_1, usage_data_1, changed=False) host_steps.check_host_usage_changing(host_2, usage_data_2, changed=True, project_id=project_id)
@pytest.mark.idempotent_id('ffc320c3-5688-4442-bcc5-05ae51788d2e') @pytest.mark.requires("computes_count >= 2")
[docs]def test_migrate_servers(cirros_image, net_subnet_router, security_group, flavor, keypair, nova_availability_zone_hosts, server_steps, create_floating_ip): """**Scenario:** Migrate servers from the specified host to other hosts. **Setup:** #. Upload cirros image #. Create network, subnet, router #. Create security group with allowed ping and ssh rules #. Create flavor **Steps:** #. Boot 3 servers on the same hypervisor #. Start migration for all servers #. Check that every server is rescheduled to other hypervisor #. Confirm resize for every server #. Check that every migrated server has an ACTIVE status #. Assign floating ip for all servers #. Send pings between all servers to check network connectivity **Teardown:** #. Delete servers #. Delete flavor #. Delete security group #. Delete network, subnet, router #. Delete cirros image """ servers = server_steps.create_servers( count=3, image=cirros_image, flavor=flavor, networks=[net_subnet_router[0]], keypair=keypair, security_groups=[security_group], availability_zone='nova:' + nova_availability_zone_hosts[0], username=config.CIRROS_USERNAME) server_steps.migrate_servers(servers) server_steps.confirm_resize_servers(servers) for server in servers: floating_ip = create_floating_ip() server_steps.attach_floating_ip(server, floating_ip) server_steps.check_ping_between_servers_via_floating( servers, timeout=config.PING_BETWEEN_SERVERS_TIMEOUT)