From 3aba5286b2586a9dfac1e7403091322d96b732cd Mon Sep 17 00:00:00 2001 From: asledzinskiy Date: Tue, 19 Apr 2016 19:27:40 +0300 Subject: [PATCH] Add method to update node interfaces - Add method to update node interfaces through cli - Update cli tests with new method Change-Id: Icd79684f7a2b48972135bed6e25261dc8e977255 Closes-Bug: #1564462 --- fuelweb_test/tests/test_cli.py | 10 ++++ fuelweb_test/tests/test_cli_base.py | 51 +++++++++++++++++++ .../tests/tests_cli/test_cli_deploy.py | 40 +++++++++------ .../tests/tests_cli/test_cli_deploy_ceph.py | 42 ++++++++------- .../tests/test_review_in_fuel_client.py | 1 + 5 files changed, 111 insertions(+), 33 deletions(-) diff --git a/fuelweb_test/tests/test_cli.py b/fuelweb_test/tests/test_cli.py index d646461e2..10570a45e 100644 --- a/fuelweb_test/tests/test_cli.py +++ b/fuelweb_test/tests/test_cli.py @@ -167,6 +167,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1}\ --role=controller'.format(cluster_id, node_ids[0])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[0]) cmd = ('fuel --env-id={0} node --provision --node={1} --json'.format( cluster_id, node_ids[0])) task = self.ssh_manager.execute_on_remote(admin_ip, @@ -181,6 +182,8 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1},{2} \ --role=compute,cinder'.format(cluster_id, node_ids[1], node_ids[2])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + for node_id in (node_ids[1], node_ids[2]): + self.update_node_interfaces(node_id) cmd = ('fuel --env-id={0} node --provision \ --node={1},{2} --json'.format(cluster_id, node_ids[1], node_ids[2])) task = self.ssh_manager.execute_on_remote(admin_ip, @@ -423,6 +426,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1}\ --role=controller'.format(cluster_id, node_ids[0])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[0]) cmd = ('fuel --env-id={0} node --provision --node={1} --json'.format( cluster_id, node_ids[0])) task = self.ssh_manager.execute_on_remote(admin_ip, @@ -443,6 +447,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1}\ --role=compute'.format(cluster_id, node_ids[1])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[1]) cmd = ('fuel --env-id={0} node --provision \ --node={1} --json'.format(cluster_id, node_ids[1])) @@ -464,6 +469,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1}\ --role=cinder'.format(cluster_id, node_ids[2])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[2]) cmd = ('fuel --env-id={0} node --provision \ --node={1} --json'.format(cluster_id, node_ids[2])) @@ -485,6 +491,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1}\ --role=mongo'.format(cluster_id, node_ids[3])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[3]) cmd = ('fuel --env-id={0} node --provision \ --node={1} --json'.format(cluster_id, node_ids[3])) @@ -507,6 +514,8 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1},{2} ' '--role=ceph-osd'.format(cluster_id, node_ids[4], node_ids[5])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + for node_id in (node_ids[4], node_ids[5]): + self.update_node_interfaces(node_id) cmd = ('fuel ' '--env-id={0} node --provision ' @@ -529,6 +538,7 @@ class CommandLineTest(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1} ' '--role=base-os'.format(cluster_id, node_ids[6])) self.ssh_manager.execute_on_remote(admin_ip, cmd) + self.update_node_interfaces(node_ids[6]) cmd = ('fuel --env-id={0} node --provision ' '--node={1} --json'.format(cluster_id, node_ids[6])) diff --git a/fuelweb_test/tests/test_cli_base.py b/fuelweb_test/tests/test_cli_base.py index ce9b0feb6..fde5b4d1b 100644 --- a/fuelweb_test/tests/test_cli_base.py +++ b/fuelweb_test/tests/test_cli_base.py @@ -27,6 +27,7 @@ from fuelweb_test.tests.base_test_case import TestBasic from fuelweb_test import logwrap from fuelweb_test import logger from fuelweb_test.helpers.utils import hiera_json_out +from fuelweb_test.settings import iface_alias from fuelweb_test.settings import SSL_CN @@ -297,3 +298,53 @@ class CommandLine(TestBasic): 'domain': url.hostname} endpoints.append(endpoint_info) return endpoints + + @logwrap + def download_node_interfaces(self, node_id): + cmd = ' fuel node --node-id {} --network --download --dir' \ + ' /tmp --json'.format(node_id) + self.ssh_manager.execute_on_remote( + ip=self.ssh_manager.admin_ip, + cmd=cmd + ) + out = self.ssh_manager.execute_on_remote( + ip=self.ssh_manager.admin_ip, + cmd='cd /tmp && cat node_{}/interfaces.json'.format(node_id), + jsonify=True + )['stdout_json'] + return out + + def upload_node_interfaces(self, node_id, interfaces): + data = json.dumps(interfaces) + cmd = 'cd /tmp && echo {data} > node_{id}/interfaces.json'.format( + data=json.dumps(data), + id=node_id) + self.ssh_manager.execute_on_remote( + ip=self.ssh_manager.admin_ip, + cmd=cmd + ) + cmd = ('fuel node --node-id {} --network --upload --dir /tmp' + ' --json'.format(node_id)) + self.ssh_manager.execute_on_remote( + ip=self.ssh_manager.admin_ip, + cmd=cmd + ) + + @logwrap + def update_node_interfaces(self, node_id): + interfaces = self.download_node_interfaces(node_id) + logger.debug("interfaces we get {}".format(interfaces)) + assigned_networks = { + iface_alias('eth0'): [{'id': 1, 'name': 'fuelweb_admin'}], + iface_alias('eth1'): [{'id': 2, 'name': 'public'}], + iface_alias('eth2'): [{'id': 3, 'name': 'management'}], + iface_alias('eth3'): [{'id': 5, 'name': 'private'}], + iface_alias('eth4'): [{'id': 4, 'name': 'storage'}], + } + for interface in interfaces: + name = interface['name'] + net_to_assign = assigned_networks.get(name, None) + if net_to_assign: + interface['assigned_networks'] = net_to_assign + logger.debug("interfaces after update {}".format(interfaces)) + self.upload_node_interfaces(node_id, interfaces) diff --git a/fuelweb_test/tests/tests_cli/test_cli_deploy.py b/fuelweb_test/tests/tests_cli/test_cli_deploy.py index 80073435c..fd6fd4b66 100644 --- a/fuelweb_test/tests/tests_cli/test_cli_deploy.py +++ b/fuelweb_test/tests/tests_cli/test_cli_deploy.py @@ -36,10 +36,11 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): 3. Add 1 controller 4. Add 1 compute 5. Add 1 cinder - 6. Verify networks - 7. Deploy the environment - 8. Verify networks - 9. Run OSTF tests + 6. Update nodes interfaces + 7. Verify networks + 8. Deploy the environment + 9. Verify networks + 10. Run OSTF tests Duration 40m """ @@ -74,8 +75,11 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): self.add_nodes_to_cluster(cluster_id, node_ids[1], ['compute']) self.add_nodes_to_cluster(cluster_id, node_ids[2], ['cinder']) self.show_step(6) - self.fuel_web.verify_network(cluster_id) + for node_id in node_ids: + self.update_node_interfaces(node_id) self.show_step(7) + self.fuel_web.verify_network(cluster_id) + self.show_step(8) cmd = 'fuel --env-id={0} deploy-changes --json'.format(cluster_id) task = self.ssh_manager.execute_on_remote( @@ -85,10 +89,10 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): )['stdout_json'] self.assert_cli_task_success(task, timeout=130 * 60) - self.show_step(8) + self.show_step(9) self.fuel_web.verify_network(cluster_id) - self.show_step(9) + self.show_step(10) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity'], should_fail=1) @@ -103,14 +107,15 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): 1. Create new environment 2. Choose Neutron, Vlan 3. Add 3 controllers - 4. Provision 3 controllers + 4. Update nodes interfaces + 5. Provision 3 controllers (fuel node --node-id x,x,x --provision --env x) - 5. Start netconfig on second controller + 6. Start netconfig on second controller (fuel node --node 2 --end netconfig --env x) - 6. Deploy controller nodes + 7. Deploy controller nodes (fuel node --node x,x,x --deploy --env-id x) - 7. Verify networks - 8. Run OSTF tests + 8. Verify networks + 9. Run OSTF tests Duration 50m """ @@ -137,6 +142,9 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): self.add_nodes_to_cluster(cluster_id, node_ids[0:3], ['controller']) self.show_step(4) + for node_id in node_ids: + self.update_node_interfaces(node_id) + self.show_step(5) cmd = ('fuel node --node-id {0} --provision --env {1} --json'. format(','.join(str(n) for n in node_ids), cluster_id)) task = self.ssh_manager.execute_on_remote( @@ -145,7 +153,7 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): jsonify=True )['stdout_json'] self.assert_cli_task_success(task, timeout=20 * 60) - self.show_step(5) + self.show_step(6) cmd = ('fuel node --node {0} --end netconfig --env {1} --json'. format(node_ids[1], release_id)) task = self.ssh_manager.execute_on_remote( @@ -154,7 +162,7 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): jsonify=True )['stdout_json'] self.assert_cli_task_success(task, timeout=30 * 60) - self.show_step(6) + self.show_step(7) cmd = 'fuel --env-id={0} deploy-changes --json'.format(cluster_id) task = self.ssh_manager.execute_on_remote( ip=self.ssh_manager.admin_ip, @@ -162,9 +170,9 @@ class CommandLineAcceptanceDeploymentTests(test_cli_base.CommandLine): jsonify=True )['stdout_json'] self.assert_cli_task_success(task, timeout=130 * 60) - self.show_step(7) - self.fuel_web.verify_network(cluster_id) self.show_step(8) + self.fuel_web.verify_network(cluster_id) + self.show_step(9) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity'], should_fail=1) diff --git a/fuelweb_test/tests/tests_cli/test_cli_deploy_ceph.py b/fuelweb_test/tests/tests_cli/test_cli_deploy_ceph.py index 251278ac6..56eec76ac 100644 --- a/fuelweb_test/tests/tests_cli/test_cli_deploy_ceph.py +++ b/fuelweb_test/tests/tests_cli/test_cli_deploy_ceph.py @@ -37,11 +37,12 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): 4. Change ceph replication factor to 2 5. Add 3 controller 6. Add 2 compute - 7. Add 2 ceph - 8. Verify networks - 9. Deploy the environment - 10. Verify networks - 11. Run OSTF tests + 7. Add 2 cephi + 8. Update nodes interfaces + 9. Verify networks + 10. Deploy the environment + 11. Verify networks + 12. Run OSTF tests Duration 40m """ @@ -79,15 +80,19 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): self.show_step(4) self.show_step(5) self.show_step(6) + self.show_step(7) self.add_nodes_to_cluster(cluster_id, node_ids[0:3], ['controller']) self.add_nodes_to_cluster(cluster_id, node_ids[3:5], ['compute']) self.add_nodes_to_cluster(cluster_id, node_ids[5:7], ['ceph-osd']) - self.show_step(7) - self.fuel_web.verify_network(cluster_id) self.show_step(8) + for node_id in node_ids: + self.update_node_interfaces(node_id) + self.show_step(9) + self.fuel_web.verify_network(cluster_id) + self.show_step(10) cmd = 'fuel --env-id={0} deploy-changes --json'.format(cluster_id) task = self.ssh_manager.execute_on_remote( @@ -97,10 +102,10 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): )['stdout_json'] self.assert_cli_task_success(task, timeout=130 * 60) - self.show_step(9) + self.show_step(11) self.fuel_web.verify_network(cluster_id) - self.show_step(10) + self.show_step(12) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['ha', 'smoke', 'sanity']) @@ -117,10 +122,11 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): 4. Add 3 controller 5. Add 2 compute 6. Add 3 ceph - 7. Verify networks - 8. Deploy the environment - 9. Verify networks - 10. Run OSTF tests + 7. Update nodes interfaces + 8. Verify networks + 9. Deploy the environment + 10. Verify networks + 11. Run OSTF tests Duration: 60 min """ @@ -167,11 +173,13 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): cluster['id'], ','.join(map(str, nodes[role])), role) ) - self.show_step(7) + for node_id in node_ids: + self.update_node_interfaces(node_id) + self.show_step(8) self.fuel_web.verify_network(cluster['id']) - self.show_step(8) + self.show_step(9) task = self.ssh_manager.execute_on_remote( ip=admin_ip, cmd='fuel --env-id={0} ' @@ -180,9 +188,9 @@ class CommandLineAcceptanceCephDeploymentTests(test_cli_base.CommandLine): )['stdout_json'] self.assert_cli_task_success(task, timeout=130 * 60) - self.show_step(9) - self.fuel_web.verify_network(cluster['id']) self.show_step(10) + self.fuel_web.verify_network(cluster['id']) + self.show_step(11) self.fuel_web.run_ostf( cluster_id=cluster['id'], test_sets=['ha', 'smoke', 'sanity'] diff --git a/gates_tests/tests/test_review_in_fuel_client.py b/gates_tests/tests/test_review_in_fuel_client.py index 265bec2f7..e3e2621c3 100644 --- a/gates_tests/tests/test_review_in_fuel_client.py +++ b/gates_tests/tests/test_review_in_fuel_client.py @@ -182,6 +182,7 @@ class CreateDeployEnvironmentCli(test_cli_base.CommandLine): cmd = ('fuel --env-id={0} node set --node {1} --role=controller' .format(cluster_id, node_id[0])) remote.execute(cmd) + self.update_node_interfaces(node_id[0]) cmd = ('fuel --env-id={0} node --provision --node={1} --json' .format(cluster_id, node_id[0])) task = run_on_remote(remote, cmd, jsonify=True)