Пример #1
0
    def test_edit_role_add_new_role(self):
        """Edit node by adding new role to it

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Select added node and click Edit Roles
            4. Select Cinder Role and click Apply Changes
            5. Verify that roles of node are Controller, Cinder
        """
        # Add node with controller role
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # Add cinder role
        with Nodes() as n:
            n.nodes[0].checkbox.click()
            n.edit_roles.click()
        RolesPanel().cinder.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertIn(ROLE_CONTROLLER, n.nodes[0].roles.text,
                          'Controller role')
            self.assertIn(ROLE_CINDER, n.nodes[0].roles.text, 'Cinder role')
Пример #2
0
    def test_add_nodes(self):
        """Deploy environment with controller and compute nodes

        Scenario:
            1. Add controller and compute node
            2. Deploy changes
            3. Verify that nodes statuses are ready
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(2)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)

        for node in Nodes().nodes:
            self.assertEqual(
                'pending addition', node.status.text.lower(),
                'Node status is Pending Addition')

        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()

        with Nodes() as n:
            self.assertEqual(2, len(n.nodes), 'Nodes amount')
            for node in n.nodes:
                self.assertEqual('ready', node.status.text.lower(),
                                 'Node status is READY')
Пример #3
0
    def test_edit_role_change_role(self):
        """Edit node by removing old role and adding two new roles to it

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Select added node and click Edit Roles
            4. Unselect Controller and select Cinder and Ceph Role
            5. Click Apply Changes
            6. Verify that roles of node are Cinder and Ceph
        """
        # Add node with controller role
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # Remove controller, Add cinder and ceph-osd roles
        with Nodes() as n:
            n.nodes[0].checkbox.click()
            n.edit_roles.click()
        with RolesPanel() as r:
            r.controller.click()
            r.cinder.click()
            r.ceph_osd.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertNotIn(ROLE_CONTROLLER, n.nodes[0].roles.text,
                             'Controller role has been removed')
            self.assertIn(ROLE_CINDER, n.nodes[0].roles.text, 'Cinder role')
            self.assertIn(ROLE_CEPH, n.nodes[0].roles.text, 'Ceph-osd role')
Пример #4
0
    def setUpClass(cls):
        """Global precondition

        Steps:
            1. Create simple environment with default values
            2. Add one controller node
            3. Add other nodes as compute
        """
        BaseTestCase.setUpClass()
        BaseTestCase.get_home()
        preconditions.Environment().simple_flat()
        BaseTestCase.get_home()
        Environments().create_cluster_boxes[0].click()
        time.sleep(1)

        # Add controller
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)

        # Add other discovered nodes as compute
        Nodes().add_nodes.click()
        time.sleep(1)
        for n in Nodes().nodes_discovered:
            n.checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
    def test_configure_interfaces_of_several_nodes(self):
        """Configure interfaces on several nodes

        Scenario:
            1. Add compute node
            2. Select compute and controller node
               and click Configure interfaces
            3. Drag and drop Public network from eth0 to eth1
            4. Drag and drop Storage network from eth0 to eth2
            5. Drag and drop Management network from eth0 to eth1
            6. Click Apply
            7. Verify that Public and Management networks
               are on eth1 interface, Storage is on eth2
        """
        # Go back to nodes page
        Tabs().nodes.click()
        # Add second node
        time.sleep(1)
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[2].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        Tabs().nodes.click()
        time.sleep(1)
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[1].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # rearrange interfaces
        with Nodes() as n:
            n.nodes[1].checkbox.click()
            n.nodes[2].checkbox.click()
            n.configure_interfaces.click()
        with InterfacesSettings() as s:
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['management'],
                s.interfaces[1].networks_box).perform()
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['storage'],
                s.interfaces[1].networks_box).perform()
            s.apply.click()
            time.sleep(1)

        for i in range(1, 3):
            # Go to nodes page
            Tabs().nodes.click()
            # Verify interfaces settings of each node
            Nodes().nodes[i].details.click()
            NodeInfo().edit_networks.click()
            self.assertIn(
                'management', s.interfaces[1].networks,
                'management at eht1. Node #{0}'.format(i))
            self.assertIn(
                'storage', s.interfaces[1].networks,
                'storage at eht1. Node #{0}'.format(i))
Пример #6
0
    def test_controller_role_always_enabled(self):
        """Check controller node in HA mode

        Scenario:
            1. Select all nodes
            2. Assign controller role
            3. Verify that nodes are with controller role
        """
        with Nodes()as n:
            for node in n.nodes_discovered:
                node.checkbox.click()
                self.assertTrue(RolesPanel().controller.is_enabled())
            RolesPanel().controller.click()
            for node in n.nodes_discovered:
                self.assertNodeInRoles(node, [ROLE_CONTROLLER])
Пример #7
0
    def test_several_nodes(self):
        """Check multiroles for many nodes

        Scenario:
            1. Select three nodes and assign controller, ceph, cinder roles
            2. Verify that role of the nodes is changed
            3. Deselect nodes
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
            n.nodes_discovered[1].checkbox.click()
            n.nodes_discovered[2].checkbox.click()
        with RolesPanel() as r:
            r.compute.click()
            r.cinder.click()
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(
                n.nodes_discovered[0],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
            self.assertNodeInRoles(
                n.nodes_discovered[1],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
            self.assertNodeInRoles(
                n.nodes_discovered[2],
                [ROLE_COMPUTE, ROLE_CINDER, ROLE_CEPH])
Пример #8
0
    def test_reset_redeploy(self):
        """Reset environment after deploy changes

        Scenario:
            1. Add controller and compute nodes
            2. Click deploy
            3. Add new compute node and deploy changes
            4. Reset environment
            4. Verify that environment is reseted
        """
        Tabs().nodes.click()
        Nodes().add_controller_compute_nodes()
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        PageObject.wait_until_exists(Nodes().apply_changes)
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        TaskResultAlert().close.click()
        Tabs().actions.click()
        Actions().reset_env()
        Tabs().nodes.click()
        for node in Nodes().nodes:
            self.assertEqual('pending addition', node.status.text.lower(),
                             'Node status is Pending Addition')
        self.assertTrue(Nodes().deploy_changes.is_enabled())
Пример #9
0
    def test_two_nodes(self):
        """Verify network with two added nodes

        Scenario:
            1. Add two compute nodes
            2. Open Networks tab
            3. Click Verify Networks
            4. Verify that message 'Verification succeeded.
               Your network is configured correctly' appears
        """
        Tabs().nodes.click()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        Nodes().nodes_discovered[1].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        Tabs().networks.click()
        time.sleep(1)
        with Networks() as n:
            n.verify_networks.click()
            self.assertIn(
                'Verification succeeded. '
                'Your network is configured correctly.',
                n.verification_alert.text, 'Verification succeeded')
Пример #10
0
    def test_compute(self):
        """Check compute node

        Scenario:
            1. Select first node and assign compute role
            2. Verify that role of the node is changed,
               controller role is disabled
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.compute.click()
            self.assertFalse(r.controller.is_enabled())
            self.assertIn(
                ERROR_ROLE_CANNOT_COMBINE,
                r.controller.find_element_by_xpath('../..').text,
                'error "{}" is visible'.format(ERROR_ROLE_CANNOT_COMBINE))
        with Nodes()as n:
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_COMPUTE])
            self.assertTrue(n.apply_changes.is_enabled())
            n.nodes_discovered[0].checkbox.click()
            self.assertFalse(n.apply_changes.is_enabled())
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_UNALLOCATED])
Пример #11
0
    def test_configure_disks_of_several_nodes(self):
        """Configure disks for several nodes

        Scenario:
            1. Add two compute nodes
            2. Select this two nodes and click configure disks
            3. Allocate size for Base system volume
            4. Click apply changes
            5. Verify that changes are correctly applied
        """
        values = [random.randint(100000, 500000) for i in range(4)]

        # Go back to nodes page
        Tabs().nodes.click()
        time.sleep(1)
        # Add second node
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().select_all_in_group[1].click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        # change volumes size
        with Nodes() as n:
            n.select_all_in_group[1].click()
            n.configure_disks.click()
            time.sleep(1)

        with DisksSettings() as s:
            for i, v in enumerate(values):
                s.disks[i].volume_storage.parent.click()
                time.sleep(1)
                s.disks[i].volume_group_storage.input.\
                    clear()
                s.disks[i].volume_group_storage.input.\
                    send_keys(v)
            s.apply.click()
            time.sleep(1)

        for i in range(1, 3):
            # Go to nodes page
            Tabs().nodes.click()
            time.sleep(1)
            # Verify disks settings of each node
            Nodes().nodes[i].details.click()
            NodeInfo().edit_disks.click()
            time.sleep(1)

            for j, v in enumerate(values):
                self.assertEqual(
                    "{:,}".format(v),
                    s.disks[j].volume_group_storage.input.get_attribute(
                        'value'),
                    'Image volume size of disk {0} of node {0} is correct'.
                    format(j, i))
Пример #12
0
        def add(role, amount):
            if amount < 1:
                return

            Nodes().add_nodes.click()
            time.sleep(1)
            for i in range(amount):
                Nodes().nodes_discovered[i].checkbox.click()
            getattr(RolesPanel(), role).click()
            Nodes().apply_changes.click()
            time.sleep(1)
    def test_discard_adding_node(self):
        """Discard changes after adding new node

        Scenario:
            1. Add compute node
            2. Discard changes
            3. Verify that there are 3 nodes and their statuses are ready
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().compute.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        self._discard_changes()
Пример #14
0
    def test_one_controller_allowed_controller_role_disabled(self):
        """Check controller node is disabled if many nodes are selected

        Scenario:
            1. Select all nodes
            2. Verify that controller role is disabled
        """
        with Nodes()as n:
            with RolesPanel() as r:
                n.nodes_discovered[0].checkbox.click()
                self.assertTrue(r.controller.is_enabled())
                for node in n.nodes_discovered[1:]:
                    node.checkbox.click()
                    self.assertFalse(r.controller.is_enabled())
Пример #15
0
    def test_all_nodes_could_be_controller(self):
        """Check all nodes with controller role in HA mode

        Scenario:
            1. Select all nodes
            2. Assign controller role
            3. Verify that nodes are with controller role
        """
        RolesPanel().controller.click()
        with Nodes()as n:
            for node in n.nodes_discovered:
                node.checkbox.click()
            for node in n.nodes_discovered:
                self.assertNodeInRoles(node, [ROLE_CONTROLLER])
    def setUpClass(cls):
        """Global precondition

        Steps:
            1. Create simple environment with default values
            2. Add one controller node
        """
        BaseTestCase.setUpClass()
        preconditions.Environment.simple_flat()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
Пример #17
0
    def test_one_controller_allowed_nodes_disabled(self):
        """Check that only one controller node is possible

        Scenario:
            1. Select first node and assign controller role
            2. Verify that checkboxes of other nodes are disabled
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.controller.click()
        for n in Nodes().nodes_discovered[1:]:
            self.assertFalse(
                n.checkbox.find_element_by_tag_name('input').is_enabled(),
                'Checkbox is disabled')
Пример #18
0
    def test_ceph(self):
        """Check ceph node

        Scenario:
            1. Select first node and assign ceph role
            2. Verify that role of the node is changed
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_CEPH])
            self.assertTrue(n.apply_changes.is_enabled())
            n.nodes_discovered[0].checkbox.click()
            self.assertFalse(n.apply_changes.is_enabled())
            self.assertNodeInRoles(n.nodes_discovered[0], [ROLE_UNALLOCATED])
Пример #19
0
    def test_multiroles(self):
        """Check multiroles node

        Scenario:
            1. Select first node and assign controller, ceph, cinder roles
            2. Verify that role of the node is changed
            3. Deselect node
            4. Verify that role is unallocated
        """
        with Nodes()as n:
            n.nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.controller.click()
            r.cinder.click()
            r.ceph_osd.click()
        with Nodes()as n:
            self.assertNodeInRoles(
                n.nodes_discovered[0],
                [ROLE_CONTROLLER, ROLE_CINDER, ROLE_CEPH])
    def setUp(self):
        """Each test precondition

        Steps:
            1. Create environment with Neutron gre
            2. Open created environment
            3. Add controller node
            4. Open interface configuration of the node
        """
        BaseTestCase.clear_nailgun_database()
        BaseTestCase.setUp(self)
        preconditions.Environment.simple_neutron_gre()
        PageObject.click_element(Nodes(), 'add_nodes')
        PageObject.click_element(Nodes(), 'nodes_discovered', 'checkbox', 0)
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        PageObject.wait_until_exists(Nodes().apply_changes)
        Nodes().nodes[0].details.click()
        NodeInfo().edit_networks.click()
Пример #21
0
    def test_adding_node_single_role(self):
        """Add one controller node

        Scenario:
            1. Select Controller role and select node
            2. Click Apply Changes
            3. Verify that Nodes page is open
            4. Amount of nodes is 1
            5. Node is the same that was selected
            6. Role of node is Controller
        """
        name = Nodes().nodes_discovered[0].name.text
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertTrue(n.env_summary.is_displayed())
            self.assertEqual(len(n.nodes), 1, 'Nodes amount')
            self.assertEqual(n.nodes[0].name.text, name, 'Node name')
            self.assertIn(ROLE_CONTROLLER, n.nodes[0].roles.text, 'Node role')
Пример #22
0
    def test_unallocated_nodes_counter(self):
        """Unallocated nodes counter

        Scenario:
            1. Add new node with compute role
            2. Verify that number of unallocated nodes was reduced on 1
        """
        initial = int(Header().unallocated_nodes.text)
        discovered = len(Nodes().nodes_discovered)

        Tabs().nodes.click()
        for i in range(discovered):
            time.sleep(1)
            Nodes().add_nodes.click()
            time.sleep(1)
            Nodes().nodes_discovered[0].checkbox.click()
            RolesPanel().compute.click()
            Nodes().apply_changes.click()
            time.sleep(1)

            self.assertEqual(str(initial - i - 1),
                             Header().unallocated_nodes.text,
                             'Unallocated nodes amount')
Пример #23
0
    def test_adding_node_multiple_roles(self):
        """Add node with controller, cinder, ceph roles

        Scenario:
            1. Select Controller, Cinder, Ceph roles and select node
            2. Click Apply Changes
            3. Verify that Nodes page is open
            4. Role of node is Controller, Cinder, Ceph
        """
        Nodes().nodes_discovered[0].checkbox.click()
        with RolesPanel() as r:
            r.controller.click()
            r.cinder.click()
            r.ceph_osd.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        with Nodes() as n:
            self.assertTrue(n.env_summary.is_displayed())
            self.assertIn(ROLE_CONTROLLER, n.nodes[0].roles.text,
                          'Node first role')
            self.assertIn(ROLE_CINDER, n.nodes[0].roles.text,
                          'Node second role')
            self.assertIn(ROLE_CEPH, n.nodes[0].roles.text, 'Node third role')
    def setUp(self):
        """Each test precondition

        Steps:
            1. Create simple environment with default values
            2. Click on created environment
            3. Create controller node
            4. Select controller node
            5. Click Configure Interfaces
        """
        BaseTestCase.clear_nailgun_database()
        BaseTestCase.setUp(self)
        preconditions.Environment.simple_flat()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        Nodes().nodes[0].details.click()
        NodeInfo().edit_networks.click()
        time.sleep(1)
Пример #25
0
    def test_node_configure_networks_is_readonly(self):
        """Configure network interfaces after deploy

        Scenario:
            1. Add controller node
            2. Deploy changes
            3. Select controller node and click configure interfaces
            4. Drag and drop Storage network to eth1
            5. Verify that Storage network can't be dragged and dropped
            6. Apply, Load defaults, Cancel Changes buttons are not active
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(2)
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        time.sleep(1)

        Nodes().nodes[0].details.click()
        NodeInfo().edit_networks.click()

        with InterfacesSettings() as s:
            ActionChains(browser.driver).drag_and_drop(
                s.interfaces[0].networks['storage'],
                s.interfaces[1].networks_box).perform()

            time.sleep(1)
            self.assertNotIn(
                'storage', s.interfaces[1].networks,
                'storage at eht1')
            self.assertFalse(s.apply.is_enabled(), 'Apply is disabled')
            self.assertFalse(s.load_defaults.is_enabled(),
                             'Load defaults is disabled')
            self.assertFalse(s.cancel_changes.is_enabled(),
                             'Cancel changes is disabled')
Пример #26
0
    def test_node_configure_disks_is_readonly(self):
        """Configure disks after deploy

        Scenario:
            1. Add controller node
            2. Deploy changes
            3. Select controller node and click configure disks
            4. Verify that volume inputs are disabled
            6. Apply, Load defaults, Cancel Changes buttons are not active
        """
        Nodes().add_nodes.click()
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(2)
        Nodes().deploy_changes.click()
        DeployChangesPopup().deploy.click()
        time.sleep(1)

        Nodes().nodes[0].details.click()
        NodeInfo().edit_disks.click()
        time.sleep(1)

        with DisksSettings() as s:
            for i in range(2):
                self.assertFalse(
                    s.disks[i].volume_group_os.input.is_enabled(),
                    'Base system input is disabled at disk #{0}'.format(i))
                self.assertFalse(
                    s.disks[i].volume_group_image.input.is_enabled(),
                    'Image storage input is disabled at disk #{0}'.format(i))
            self.assertFalse(s.apply.is_enabled(), 'Apply is disabled')
            self.assertFalse(s.load_defaults.is_enabled(),
                             'Load defaults is disabled')
            self.assertFalse(s.cancel_changes.is_enabled(),
                             'Cancel changes is disabled')
Пример #27
0
    def test_one_node(self):
        """Verify network with one added nodes

        Scenario:
            1. Add one controller node
            2. Open Networks tab
            3. Click Verify Networks
            4. Verify that message 'At least two nodes are required' appears
        """
        Tabs().nodes.click()
        time.sleep(1)
        Nodes().add_nodes.click()
        time.sleep(1)
        Nodes().nodes_discovered[0].checkbox.click()
        RolesPanel().controller.click()
        Nodes().apply_changes.click()
        time.sleep(1)
        Tabs().networks.click()
        time.sleep(1)
        with Networks() as n:
            n.verify_networks.click()
            self.assertIn(
                'At least two nodes are required', n.verification_alert.text,
                'Alert text contains "At least two nodes are required"')