コード例 #1
0
ファイル: discovery_tests.py プロジェクト: Carl-Shi/RackHD
class DiscoveryTests(object):

    def __init__(self):
        self.__client = config.api_client
        self.__graph_name = None
        self.__task_worker = None
        self.__workflow_instance = WorkflowsTests()

    def __get_workflow_status(self, id):
        Nodes().nodes_identifier_workflows_active_get(id)
        status = self.__client.last_response.status
        if status == 200:
            data = loads(self.__client.last_response.data)
            status = data.get('_status')
            assert_is_not_none(status)
        return status

    @test(groups=['test_discovery_post_reboot'], depends_on_groups=["test-node-poller"])
    def test_node_workflows_post_reboot(self):
        """Testing reboot node POST:id/workflows"""
        self.__workflow_instance.post_workflows("Graph.Reboot.Node")

    @test(groups=['test_discovery_reboot_finish'], depends_on_groups=["test_discovery_post_reboot"])
    def test_node_workflows_finish(self):
        """Wait for :id/workflows/active to be updated to empty"""
        Nodes().nodes_get()
        nodes = loads(self.__client.last_response.data)

        for n in nodes:
            if n.get('type') == 'compute':
                id = n.get('id')
                assert_not_equal(id,None)
                status = self.__get_workflow_status(id)
                retries = 20
                while status == 'pending' and retires != 0:
                    LOG.warning('Workflow status for Node {0} (status={1},retries={2})'.format(id,status,retries))
                    status = self.__get_workflow_status(id)
                    sleep(5)
                    retries -= 1
                assert_not_equal(0, retries, message="Workflow didn't end!")

    @test(groups=['test_discovery_delete_node'],
            depends_on_groups=["test_discovery_reboot_finish", "test-bm-discovery-prepare"])
    def test_node_delete_all(self):
        """ Testing DELETE all compute nodes """
        codes = []
        Nodes().nodes_get()
        nodes = loads(self.__client.last_response.data)

        for n in nodes:
            if n.get('type') == 'compute':
                uuid = n.get('id')
                Nodes().nodes_identifier_delete(uuid)
                codes.append(self.__client.last_response)

        assert_not_equal(0, len(codes), message='Delete node list empty!')
        for c in codes:
            assert_equal(200, c.status, message=c.reason)
コード例 #2
0
    def test_install_centos7(self):
        """ Testing CentOS 7 Installer Workflow """

        self.case_recorder.write_event('start all bootstrap')
        body = {
            "options": {
                "defaults": {
                    "version": "7",
                    "repo": self.__os_repo
                }
            }
        }

        WorkflowsTests().post_workflows("Graph.InstallCentOS",
                                        nodes=[],
                                        data=body,
                                        run_now=False)
コード例 #3
0
ファイル: discovery_tests.py プロジェクト: Carl-Shi/RackHD
 def __init__(self):
     self.__client = config.api_client
     self.__graph_name = None
     self.__task_worker = None
     self.__workflow_instance = WorkflowsTests()
コード例 #4
0
 def __init__(self):
     self.__client = config.api_client
     self.__graph_name = None
     self.__task_worker = None
     self.__workflow_instance = WorkflowsTests()
コード例 #5
0
class DiscoveryTests(object):

    def __init__(self):
        self.__client = config.api_client
        self.__graph_name = None
        self.__task_worker = None
        self.__workflow_instance = WorkflowsTests()

    def __get_workflow_status(self, id):
        Nodes().nodes_identifier_workflows_active_get(id)
        status = self.__client.last_response.status
        if status == 200:
            data = loads(self.__client.last_response.data)
            status = data.get('_status')
            assert_is_not_none(status)
        return status

    @test(groups=['test_discovery_post_reboot'], depends_on_groups=["test-node-poller"])
    def test_node_workflows_post_reboot(self):
        """Testing reboot node POST:id/workflows"""
        workflow = {
            "friendlyName": "set PXE and reboot node",
            "injectableName": "Graph.PXE.Reboot",
            "tasks": [
                {
                    "label": "set-boot-pxe",
                    "taskName": "Task.Obm.Node.PxeBoot",
                },
                {
                    "label": "reboot-start",
                    "taskName": "Task.Obm.Node.Reboot",
                    "waitOn": {
                        "set-boot-pxe": "succeeded"
                    }
                }
            ]
        }

        self.__workflow_instance.put_workflow(workflow)
        self.__workflow_instance.post_workflows("Graph.PXE.Reboot")

    @test(groups=['test_discovery_delete_node'],
            depends_on_groups=["test_discovery_post_reboot", "test-bm-discovery-prepare"])
    def test_node_delete_all(self):
        """ Testing DELETE all compute nodes """
        codes = []
        Nodes().nodes_get()
        nodes = loads(self.__client.last_response.data)

        for n in nodes:
            if n.get('type') == 'compute':
                uuid = n.get('id')
                try:
                    Nodes().nodes_identifier_workflows_active_delete(uuid)
                except ApiException as e:
                    assert_equal(404, e.status, message = 'status should be 404')
                except (TypeError, ValueError) as e:
                    assert(e.message)

                Nodes().nodes_identifier_delete(uuid)
                codes.append(self.__client.last_response)

        assert_not_equal(0, len(codes), message='Delete node list empty!')
        for c in codes:
            assert_equal(200, c.status, message=c.reason)

    @test(groups=['test_discovery_add_obm'],
            depends_on_groups=["test_discovery_delete_node", "test-bm-discovery"])
    def test_node_add_obm(self):
        assert_equal(len(obmSettings().setup_nodes(service_type='ipmi-obm-service')), 0)