Ejemplo n.º 1
0
    def step_5_run_cluster_haproxy_controller(self):
        """Execute cluster-haproxy task on controller, create snapshot
          Depends:
          "run_tasks_end_with_vips"

          Scenario:
            1. Revert snapshot "run_virtual_ips_controller"
            2. Get cluster id
            3. Execute cluster-haproxy task on controller
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_5_run_cluster_haproxy_controller"
        """
        self.check_run_by_group('step_5_run_cluster_haproxy_controller',
                                'cluster_haproxy_controller')
        self.env.revert_snapshot("run_tasks_end_with_vips")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']
        ]

        self.sync_manifest_to_the_slaves(cluster_id=cluster_id,
                                         node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='cluster-haproxy')

        pre_cluster_haproxy = self.get_pre_test(tasks, 'cluster-haproxy')
        post_cluster_haproxy = self.get_post_test(tasks, 'cluster-haproxy')
        if pre_cluster_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=pre_cluster_haproxy[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['conntrackd'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['cluster-haproxy'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_cluster_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=post_cluster_haproxy[0]['cmd'])

        self.env.make_snapshot("step_5_run_cluster_haproxy_controller")
Ejemplo n.º 2
0
    def step_5_run_cluster_haproxy_controller(self):
        """Execute cluster-haproxy task on controller, create snapshot
          Depends:
          "run_tasks_end_with_vips"

          Scenario:
            1. Revert snapshot "run_virtual_ips_controller"
            2. Get cluster id
            3. Execute cluster-haproxy task on controller
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_5_run_cluster_haproxy_controller"
        """
        self.check_run_by_group('step_5_run_cluster_haproxy_controller',
                                'cluster_haproxy_controller')
        self.env.revert_snapshot("run_tasks_end_with_vips")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='cluster-haproxy')

        pre_cluster_haproxy = self.get_pre_test(tasks, 'cluster-haproxy')
        post_cluster_haproxy = self.get_post_test(tasks, 'cluster-haproxy')
        if pre_cluster_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(
                        remote=ssh,
                        path=pre_cluster_haproxy[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['conntrackd'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['cluster-haproxy'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_cluster_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(
                        remote=ssh,
                        path=post_cluster_haproxy[0]['cmd'])

        self.env.make_snapshot("step_5_run_cluster_haproxy_controller")
Ejemplo n.º 3
0
    def step_7_run_openstack_controller(self):
        """Execute openstack-controller task on controller, create snapshot
          Depends:
          "Step 6 run openstack haproxy controller

          Scenario:
            1. Revert snapshot "step_6_run_openstack_haproxy_controller"
            2. Get cluster id
            4. Execute openstack-controller task on controller
            5. Verify that task was finished with success.
            6. Assert task execution
            7. Create snapshot

        Snapshot: "step_7_run_openstack_controller"
        """
        self.check_run_by_group('step_7_run_openstack_controller',
                                'openstack_controller')
        self.env.revert_snapshot("step_6_run_openstack_haproxy_controller")

        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='openstack-controller')

        pre_openstack_ctr = self.get_pre_test(tasks, 'openstack-controller')
        post_openstack_ctr = self.get_post_test(tasks, 'openstack-controller')
        if pre_openstack_ctr:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_openstack_ctr[0]['cmd'])
             for node in ['slave-01']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['openstack-controller'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_openstack_ctr:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_openstack_ctr[0]['cmd'])
             for node in ['slave-01']]

        self.env.make_snapshot("step_7_run_openstack_controller")
Ejemplo n.º 4
0
    def step_10_run_top_role_cinder(self):
        """Execute top-role-cinder task on cinders, create snapshot
          Depends:
          "Step 9 run_top_role_compute

          Scenario:
            1. Revert snapshot "step_9_run_top_role_compute"
            2. Get cluster id
            4. Execute top-role-cinder task on cinder nodes
            5. Verify that task was finished with success.
            6. Assert task execution
            7. Create snapshot

        Snapshot: "step_10_run_top_role_cinder"
        """
        self.check_run_by_group('step_10_run_top_role_cinder',
                                'top_role_cinder')

        self.env.revert_snapshot('step_9_run_top_role_compute')
        cluster_id = self.get_cluster_id()
        nodes_ids = [n['id'] for n in
                     self.fuel_web.client.list_cluster_nodes(cluster_id)]

        cinder_ids = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'cinder' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=nodes_ids)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='top-role-cinder')

        pre_top_cinder = self.get_pre_test(tasks, 'top-role-cinder')
        post_top_cinder = self.get_post_test(tasks, 'top-role-cinder')
        if pre_top_cinder:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_top_cinder[0]['cmd'])
             for node in ['slave-03']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['top-role-cinder'],
            node_id=str(cinder_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_top_cinder:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_top_cinder[0]['cmd'])
             for node in ['slave-03']]

        # Run post_deployment
        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, start='post_deployment_start',
            end='post_deployment_end')

        data = [task['id'] for task in tasks]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=data,
            node_id=str(nodes_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        time.sleep(100)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("step_10_run_top_role_cinder")
Ejemplo n.º 5
0
    def step_9_run_top_role_compute(self):
        """Execute top-role-compute task on computes, create snapshot
          Depends:
          "step_8_run_controller_remaining_task

          Scenario:
            1. Revert snapshot "step_8_run_controller_remaining_task"
            2. Get cluster id
            4. Execute top-role-compute task on computes
            5. Verify that task was finished with success.
            6. Assert task execution
            7. Create snapshot

        Snapshot: "step_9_run_top_role_compute"
        """
        self.check_run_by_group('step_9_run_top_role_compute',
                                'top_role_compute')

        self.env.revert_snapshot("step_8_run_controller_remaining_tasks")
        cluster_id = self.get_cluster_id()
        compute_ids = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'compute' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=compute_ids)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='post_deployment_end')

        pre_top_compute = self.get_pre_test(tasks, 'top-role-compute')
        post_top_compute = self.get_post_test(tasks, 'top-role-compute')
        if pre_top_compute:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_top_compute[0]['cmd'])
             for node in ['slave-02']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['top-role-compute'],
            node_id=str(compute_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_top_compute:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_top_compute[0]['cmd'])
             for node in ['slave-02']]

        pre_net = self.get_pre_test(tasks, 'openstack-network-compute')
        post_net = self.get_post_test(tasks, 'openstack-network-compute')
        if pre_net:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_net[0]['cmd'])
             for node in ['slave-02', 'slave-03']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['openstack-network-compute'],
            node_id=str(compute_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        if post_net:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_net[0]['cmd'])
             for node in ['slave-02']]

        self.env.make_snapshot("step_9_run_top_role_compute")
Ejemplo n.º 6
0
    def step_8_run_controller_remaining_tasks(self):
        """Execute controller_remaining_task task on controller
          Depends:
          "Step 7 run openstack controller

          Scenario:
            1. Revert snapshot "step_7_run_openstack_controller"
            2. Get cluster id
            4. Executecontroller_remaining_tasks on controller
            5. Verify that task was finished with success.
            6. Assert task execution
            7. Create snapshot

        Snapshot: "step_8_run_controller_remaining_tasks"
        """
        self.check_run_by_group('step_8_run_controller_remaining_tasks',
                                'controller_remaining_tasks')
        self.env.revert_snapshot("step_7_run_openstack_controller")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, start='openstack-controller',
            end='controller_remaining_tasks')
        expected_task_list = ['heat', 'horizon', 'swift',
                              'controller_remaining_tasks']

        for task in expected_task_list:
            assert_true(task in [t['id'] for t in tasks],
                        'Can not find task {0}, '
                        'current list {1}'.format(task, tasks))

        pre_net = self.get_pre_test(tasks, 'openstack-network')
        if pre_net:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_net[0]['cmd'])
             for node in ['slave-01']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=[task['id'] for task in tasks],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['api-proxy', 'swift-rebalance-cron'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['openstack-network'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        expected_task_list.append('openstack-network')
        expected_task_list.append('api-proxy')

        for task in expected_task_list:
            if self.get_post_test(tasks, task):
                [gd.run_check_from_task(
                    remote=self.fuel_web.get_ssh_for_node(node),
                    path=self.get_post_test(tasks, task)[0]['cmd'])
                 for node in ['slave-01']]
        try:
            self.fuel_web.run_ostf(cluster_id=cluster_id,
                                   test_sets=['sanity'],
                                   should_fail=1)
        except AssertionError:
            time.sleep(60)
            self.fuel_web.run_ostf(cluster_id, test_sets=['sanity'],
                                   should_fail=1)

        self.env.make_snapshot("step_8_run_controller_remaining_tasks")
Ejemplo n.º 7
0
    def step_6_run_openstack_haproxy_controller(self):
        """Execute openstack-haproxy task on controller, create snapshot
          Depends:
          "Step 5 run cluster-haproxy"

          Scenario:
            1. Revert snapshot "step 5 run cluster haproxy controller"
            2. Get cluster id
            4. Execute openstack-haproxy task on controller
            5. Verify that task was finished with success.
            6. Assert task execution
            7. Create snapshot

        Snapshot: "step_6_run_openstack_haproxy_controller"
        """
        self.check_run_by_group('step_6_run_openstack_haproxy_controller',
                                'openstack_haproxy_controller')
        self.env.revert_snapshot("step_5_run_cluster_haproxy_controller")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id'] for n in
            self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']]

        self.sync_manifest_to_the_slaves(
            cluster_id=cluster_id,
            node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='openstack-haproxy')

        pre_openstack_haproxy = self.get_pre_test(tasks, 'openstack-haproxy')
        post_openstack_haproxy = self.get_post_test(tasks, 'openstack-haproxy')
        if pre_openstack_haproxy:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=pre_openstack_haproxy[0]['cmd'])
             for node in ['slave-01']]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['openstack-haproxy'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['dns-server'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='openstack-controller')

        logger.debug("task list for services {0}".format(tasks))

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['apache', 'memcached', 'database', 'rabbitmq',
                              'keystone', 'glance', 'openstack-cinder'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)
        if post_openstack_haproxy:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_openstack_haproxy[0]['cmd'])
             for node in ['slave-01']]
        for service in ['memcached', 'openstack-cinder', 'database'
                        'rabbitmq', 'apache']:
        # for service in ['memcached', 'openstack-cinder', 'database'
        #                 'rabbitmq', 'keystone', 'glance']:
            if self.get_post_test(tasks, service):
                [gd.run_check_from_task(
                    remote=self.fuel_web.get_ssh_for_node(node),
                    path=self.get_post_test(tasks, service)[0]['cmd'])
                 for node in ['slave-01']]

        self.env.make_snapshot("step_6_run_openstack_haproxy_controller")
Ejemplo n.º 8
0
    def run_tasks_end_with_vips(self):
        """Run tasks end with vips.
          Depends:
          "step_1_create_3_node_cluster"

          Scenario:
            1. Revert snapshot "step 1 create_3_node_cluster_provision"
            2. Get cluster id
            3. Get cluster task list
            4. Execute tasks ended with vips on controller
            5. Execute tasks ended with host on other nodes
            6. Assert tasks completions
            7. Create snapshot

        Snapshot: "run_tasks_end_with_vips"
        """
        self.check_run_by_group('run_tasks_end_with_vips',
                                'run_tasks_end_with_vips')
        self.env.revert_snapshot("step_1_create_3_node_cluster")

        cluster_id = self.get_cluster_id()

        # get task list:
        task_controller = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='virtual_ips')

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='hosts')

        logger.debug('task list is {0}'.format(tasks))

        data = [task['id'] for task in tasks]

        controller_id = [n['id'] for n in
                         self.fuel_web.client.list_cluster_nodes(cluster_id)
                         if 'controller' in n['pending_roles']]

        computes_ids = [n['id'] for n in
                        self.fuel_web.client.list_cluster_nodes(cluster_id)
                        if 'controller' not in n['pending_roles']]

        assert_true('cluster-vrouter' in [task['id']
                                          for task in task_controller])

        c_task = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=[task['id'] for task in task_controller],
            node_id=str(controller_id).strip('[]'))

        self.fuel_web.assert_task_success(c_task)

        task = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=data, node_id=str(computes_ids).strip('[]'))

        logger.debug('task info is {0}'.format(task))
        self.fuel_web.assert_task_success(task)

        nodes_ids = [n['id'] for n in
                     self.fuel_web.client.list_cluster_nodes(cluster_id)]

        task_tools = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['tools'], node_id=str(nodes_ids).strip('[]'))

        self.fuel_web.assert_task_success(task_tools)

        task_firewall = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['firewall'],
            node_id=str(nodes_ids).strip('[]'))

        self.fuel_web.assert_task_success(task_firewall)

        all_tasks = self.fuel_web.client.get_cluster_deployment_tasks(
            cluster_id)

        nodes = ['slave-0{0}'.format(slave) for slave in xrange(1, 4)]

        # check hiera

        if self.get_post_test(tasks, 'hiera'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(tasks, 'hiera')[0]['cmd'])
             for node in nodes]

        # check globals

        if self.get_post_test(tasks, 'globals'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(tasks, 'globals')[0]['cmd'])
             for node in nodes]

        # check netconfig

        if self.get_post_test(tasks, 'netconfig'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(tasks, 'netconfig')[0]['cmd'])
             for node in nodes]

        # check firewall

        if self.get_post_test(all_tasks, 'firewall'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(all_tasks, 'firewall')[0]['cmd'])
             for node in nodes]

        # check hosts

        if self.get_post_test(tasks, 'hosts'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(tasks, 'hosts')[0]['cmd'])
             for node in nodes]

        # check tools

        if self.get_post_test(all_tasks, 'tools'):
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=self.get_post_test(all_tasks, 'tools')[0]['cmd'])
             for node in nodes]

        # check cluster on controller

        post_cluster = self.get_post_test(all_tasks, 'cluster')

        if post_cluster:
            [gd.run_check_from_task(
                remote=self.fuel_web.get_ssh_for_node(node),
                path=post_cluster[0]['cmd'])
             for node in ['slave-01']]
        post_virtual_ips = self.get_post_test(tasks, 'virtual_ips')
        if post_virtual_ips:
            try:
                gd.run_check_from_task(
                    remote=self.fuel_web.get_ssh_for_node('slave-01'),
                    path=post_virtual_ips[0]['cmd'])
            except AssertionError:
                import time
                time.sleep(60)
                gd.run_check_from_task(
                    remote=self.fuel_web.get_ssh_for_node('slave-01'),
                    path=post_virtual_ips[0]['cmd'])

        self.env.make_snapshot("run_tasks_end_with_vips")
Ejemplo n.º 9
0
    def step_10_run_top_role_cinder(self):
        """Execute top-role-cinder task on cinders, create snapshot
          Depends:
          "Step 9 run_top_role_compute

          Scenario:
            1. Revert snapshot "step_9_run_top_role_compute"
            2. Get cluster id
            3. Execute top-role-cinder task on cinder nodes
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_10_run_top_role_cinder"
        """
        self.check_run_by_group('step_10_run_top_role_cinder',
                                'top_role_cinder')

        self.env.revert_snapshot('step_9_run_top_role_compute')
        cluster_id = self.get_cluster_id()
        nodes_ids = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
        ]

        cinder_ids = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'cinder' in n['roles']
        ]

        self.sync_manifest_to_the_slaves(cluster_id=cluster_id,
                                         node_ids=nodes_ids)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='top-role-cinder')

        pre_top_cinder = self.get_pre_test(tasks, 'top-role-cinder')
        post_top_cinder = self.get_post_test(tasks, 'top-role-cinder')
        if pre_top_cinder:
            for node in ['slave-03']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=pre_top_cinder[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['top-role-cinder'],
            node_id=str(cinder_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_top_cinder:
            for node in ['slave-03']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=post_top_cinder[0]['cmd'])

        # Run post_deployment
        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id,
            start='post_deployment_start',
            end='post_deployment_end')

        data = [task['id'] for task in tasks]

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=data, node_id=str(nodes_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        time.sleep(100)
        self.fuel_web.run_ostf(cluster_id=cluster_id)

        self.env.make_snapshot("step_10_run_top_role_cinder")
Ejemplo n.º 10
0
    def step_9_run_top_role_compute(self):
        """Execute top-role-compute task on computes, create snapshot
          Depends:
          "step_8_run_controller_remaining_task

          Scenario:
            1. Revert snapshot "step_8_run_controller_remaining_task"
            2. Get cluster id
            3. Execute top-role-compute task on computes
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_9_run_top_role_compute"
        """
        self.check_run_by_group('step_9_run_top_role_compute',
                                'top_role_compute')

        self.env.revert_snapshot("step_8_run_controller_remaining_tasks")
        cluster_id = self.get_cluster_id()
        compute_ids = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'compute' in n['roles']
        ]

        self.sync_manifest_to_the_slaves(cluster_id=cluster_id,
                                         node_ids=compute_ids)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='post_deployment_end')

        pre_top_compute = self.get_pre_test(tasks, 'top-role-compute')
        post_top_compute = self.get_post_test(tasks, 'top-role-compute')
        if pre_top_compute:
            for node in ['slave-02']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=pre_top_compute[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['top-role-compute'],
            node_id=str(compute_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)
        if post_top_compute:
            for node in ['slave-02']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=post_top_compute[0]['cmd'])

        pre_net = self.get_pre_test(tasks, 'openstack-network-compute')
        post_net = self.get_post_test(tasks, 'openstack-network-compute')
        if pre_net:
            for node in ['slave-02', 'slave-03']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh, path=pre_net[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['openstack-network-compute'],
            node_id=str(compute_ids).strip('[]'))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        if post_net:
            for node in ['slave-02']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh, path=post_net[0]['cmd'])

        self.env.make_snapshot("step_9_run_top_role_compute")
Ejemplo n.º 11
0
    def step_8_run_controller_remaining_tasks(self):
        """Execute controller_remaining_task task on controller
          Depends:
          "Step 7 run openstack controller

          Scenario:
            1. Revert snapshot "step_7_run_openstack_controller"
            2. Get cluster id
            3. Executecontroller_remaining_tasks on controller
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_8_run_controller_remaining_tasks"
        """
        self.check_run_by_group('step_8_run_controller_remaining_tasks',
                                'controller_remaining_tasks')
        self.env.revert_snapshot("step_7_run_openstack_controller")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']
        ]

        self.sync_manifest_to_the_slaves(cluster_id=cluster_id,
                                         node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id,
            start='openstack-controller',
            end='controller_remaining_tasks')
        expected_task_list = [
            'heat', 'horizon', 'swift', 'controller_remaining_tasks'
        ]

        for task in expected_task_list:
            assert_true(
                task in [t['id'] for t in tasks], 'Can not find task {0}, '
                'current list {1}'.format(task, tasks))

        pre_net = self.get_pre_test(tasks, 'openstack-network')
        if pre_net:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh, path=pre_net[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=[task['id'] for task in tasks],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['api-proxy', 'swift-rebalance-cron'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['openstack-network'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))

        self.fuel_web.assert_task_success(task=res)

        expected_task_list.append('openstack-network')
        expected_task_list.append('api-proxy')

        for task in expected_task_list:
            if self.get_post_test(tasks, task):
                for node in ['slave-01']:
                    with self.fuel_web.get_ssh_for_node(node) as ssh:
                        gd.run_check_from_task(remote=ssh,
                                               path=self.get_post_test(
                                                   tasks, task)[0]['cmd'])
        try:
            self.fuel_web.run_ostf(cluster_id=cluster_id,
                                   test_sets=['sanity'],
                                   should_fail=1)
        except AssertionError:
            time.sleep(60)
            self.fuel_web.run_ostf(cluster_id,
                                   test_sets=['sanity'],
                                   should_fail=1)

        self.env.make_snapshot("step_8_run_controller_remaining_tasks")
Ejemplo n.º 12
0
    def step_6_run_openstack_haproxy_controller(self):
        """Execute openstack-haproxy task on controller, create snapshot
          Depends:
          "Step 5 run cluster-haproxy"

          Scenario:
            1. Revert snapshot "step 5 run cluster haproxy controller"
            2. Get cluster id
            3. Execute openstack-haproxy task on controller
            4. Verify that task was finished with success.
            5. Assert task execution
            6. Create snapshot

        Snapshot: "step_6_run_openstack_haproxy_controller"
        """
        self.check_run_by_group('step_6_run_openstack_haproxy_controller',
                                'openstack_haproxy_controller')
        self.env.revert_snapshot("step_5_run_cluster_haproxy_controller")
        cluster_id = self.get_cluster_id()
        controller_id = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['roles']
        ]

        self.sync_manifest_to_the_slaves(cluster_id=cluster_id,
                                         node_ids=controller_id)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='openstack-haproxy')

        pre_openstack_haproxy = self.get_pre_test(tasks, 'openstack-haproxy')
        post_openstack_haproxy = self.get_post_test(tasks, 'openstack-haproxy')
        if pre_openstack_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(
                        remote=ssh, path=pre_openstack_haproxy[0]['cmd'])

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['openstack-haproxy'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=['dns-server'],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)

        tasks = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='openstack-controller')

        logger.debug("task list for services {0}".format(tasks))

        res = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=[
                'apache', 'memcached', 'database', 'rabbitmq', 'keystone',
                'glance', 'openstack-cinder'
            ],
            node_id='{0}'.format(controller_id[0]))
        logger.debug('res info is {0}'.format(res))
        self.fuel_web.assert_task_success(task=res)
        if post_openstack_haproxy:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(
                        remote=ssh, path=post_openstack_haproxy[0]['cmd'])
        # for service in ['memcached', 'openstack-cinder', 'database'
        #                 'rabbitmq', 'keystone', 'glance']:
        for service in [
                'memcached', 'openstack-cinder', 'database', 'rabbitmq',
                'apache'
        ]:
            if self.get_post_test(tasks, service):
                for node in ['slave-01']:
                    with self.fuel_web.get_ssh_for_node(node) as ssh:
                        gd.run_check_from_task(remote=ssh,
                                               path=self.get_post_test(
                                                   tasks, service)[0]['cmd'])

        self.env.make_snapshot("step_6_run_openstack_haproxy_controller")
Ejemplo n.º 13
0
    def run_tasks_end_with_vips(self):
        """Run tasks end with vips.
          Depends:
          "step_1_create_3_node_cluster"

          Scenario:
            1. Revert snapshot "step 1 create_3_node_cluster_provision"
            2. Get cluster id
            3. Get cluster task list
            4. Execute tasks ended with vips on controller
            5. Execute tasks ended with host on other nodes
            6. Assert tasks completions
            7. Create snapshot

        Snapshot: "run_tasks_end_with_vips"
        """
        self.check_run_by_group('run_tasks_end_with_vips',
                                'run_tasks_end_with_vips')
        self.env.revert_snapshot("step_1_create_3_node_cluster")

        cluster_id = self.get_cluster_id()

        # get task list:
        task_controller = self.fuel_web.client.get_end_deployment_tasks(
            cluster_id, end='virtual_ips')

        tasks = self.fuel_web.client.get_end_deployment_tasks(cluster_id,
                                                              end='hosts')

        logger.debug('task list is {0}'.format(tasks))

        data = [task['id'] for task in tasks]

        controller_id = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' in n['pending_roles']
        ]

        computes_ids = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
            if 'controller' not in n['pending_roles']
        ]

        assert_true(
            'cluster-vrouter' in [task['id'] for task in task_controller])

        c_task = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id,
            data=[task['id'] for task in task_controller],
            node_id=str(controller_id).strip('[]'))

        self.fuel_web.assert_task_success(c_task)

        task = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=data, node_id=str(computes_ids).strip('[]'))

        logger.debug('task info is {0}'.format(task))
        self.fuel_web.assert_task_success(task)

        nodes_ids = [
            n['id']
            for n in self.fuel_web.client.list_cluster_nodes(cluster_id)
        ]

        task_tools = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['tools'], node_id=str(nodes_ids).strip('[]'))

        self.fuel_web.assert_task_success(task_tools)

        task_firewall = self.fuel_web.client.put_deployment_tasks_for_cluster(
            cluster_id, data=['firewall'], node_id=str(nodes_ids).strip('[]'))

        self.fuel_web.assert_task_success(task_firewall)

        all_tasks = self.fuel_web.client.get_cluster_deployment_tasks(
            cluster_id)

        nodes = ['slave-0{0}'.format(slave) for slave in xrange(1, 4)]

        # check hiera

        if self.get_post_test(tasks, 'hiera'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               tasks, 'hiera')[0]['cmd'])

        # check globals

        if self.get_post_test(tasks, 'globals'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               tasks, 'globals')[0]['cmd'])

        # check netconfig

        if self.get_post_test(tasks, 'netconfig'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               tasks, 'netconfig')[0]['cmd'])

        # check firewall

        if self.get_post_test(all_tasks, 'firewall'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               all_tasks,
                                               'firewall')[0]['cmd'])
        # check hosts

        if self.get_post_test(tasks, 'hosts'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               tasks, 'hosts')[0]['cmd'])

        # check tools

        if self.get_post_test(all_tasks, 'tools'):
            for node in nodes:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=self.get_post_test(
                                               all_tasks, 'tools')[0]['cmd'])

        # check cluster on controller

        post_cluster = self.get_post_test(all_tasks, 'cluster')

        if post_cluster:
            for node in ['slave-01']:
                with self.fuel_web.get_ssh_for_node(node) as ssh:
                    gd.run_check_from_task(remote=ssh,
                                           path=post_cluster[0]['cmd'])
        post_virtual_ips = self.get_post_test(tasks, 'virtual_ips')
        if post_virtual_ips:
            with self.fuel_web.get_ssh_for_node('slave-01') as ssh:
                try:
                    gd.run_check_from_task(remote=ssh,
                                           path=post_virtual_ips[0]['cmd'])
                except AssertionError:
                    import time
                    time.sleep(60)
                    gd.run_check_from_task(remote=ssh,
                                           path=post_virtual_ips[0]['cmd'])

        self.env.make_snapshot("run_tasks_end_with_vips")