예제 #1
0
파일: ipmi.py 프로젝트: razaaliraza/hil
    def test_node_set_bootdev(self):
        """Test setting the boot device."""
        nodes = self.collect_nodes()
        for node in nodes:
            # change a node's bootdevice to a valid boot device
            api.node_set_bootdev(node.label, 'pxe')
            api.node_set_bootdev(node.label, 'disk')
            api.node_set_bootdev(node.label, 'none')
            # set the bootdevice to something invalid
            with pytest.raises(api.BadArgumentError):
                api.node_set_bootdev(node.label, 'invalid-device')

        # register a node with erroneous ipmi details to raise OBMError
        # XXX: In theory, this could actually be a real node; we should take
        # some measure to ensure this never collides with something actually
        # in our test setup.
        api.node_register(
            'node-99-z4qa63',
            obm={
                "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                "host": "ipmihost",
                "user": "******",
                "password": "******"
            })
        with pytest.raises(api.OBMError):
            api.node_set_bootdev('node-99-z4qa63', 'none')
예제 #2
0
def test_power_operations(mock_node):
    """Test the power-related obm api calls.

    i.e. power_off, power_cycle, set_bootdev, power_status
    """
    # Obm is disabled; these should all fail:
    with pytest.raises(errors.BlockedError):
        api.node_power_off(mock_node)
    with pytest.raises(errors.BlockedError):
        api.node_power_on(mock_node)
    with pytest.raises(errors.BlockedError):
        api.node_set_bootdev(mock_node, 'A')
    with pytest.raises(errors.BlockedError):
        api.node_power_cycle(mock_node, force=True)
    with pytest.raises(errors.BlockedError):
        api.node_power_cycle(mock_node, force=False)
    with pytest.raises(errors.BlockedError):
        api.node_power_status(mock_node)
    with pytest.raises(errors.BlockedError):
        api.show_console(mock_node)

    # Now let's enable it and try again.
    api.node_enable_disable_obm(mock_node, enabled=True)

    def _power_cycle(force):
        _follow_redirect(
            'POST',
            api.node_power_cycle(mock_node, force=force),
            data=json.dumps({
                'force': force,
            }))

    _follow_redirect('POST', api.node_power_off(mock_node))

    resp = _follow_redirect('GET', api.node_power_status(mock_node))
    assert json.loads(resp.content) == {'power_status': 'Mock Status'}

    _follow_redirect('POST', api.node_power_on(mock_node))

    _follow_redirect(
        'PUT',
        api.node_set_bootdev(mock_node, 'A'),
        data=json.dumps({'bootdev': 'A'}),
    )
    _power_cycle(True)
    _power_cycle(False)

    resp = _follow_redirect('GET', api.show_console(mock_node), stream=True)
    # Read the first chunk of the output from the console to make sure it
    # looks right:
    i = 0
    for line in resp.iter_lines():
        assert line == str(i)
        if i >= 10:
            break
        i += 1
예제 #3
0
파일: ipmi.py 프로젝트: djfinn14/hil
    def test_node_set_bootdev(self):
        """Check that node_set_bootdev throws error for invalid devices."""

        api.node_register('node-99', obm={
                  "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                  "host": "ipmihost",
                  "user": "******",
                  "password": "******"})

        # throw BadArgumentError for an invalid bootdevice
        with pytest.raises(errors.BadArgumentError):
            api.node_set_bootdev('node-99', 'invalid-device')
예제 #4
0
파일: ipmi.py 프로젝트: shwsun/haas
    def test_node_set_bootdev(self):
        """Check that node_set_bootdev throws error for invalid devices."""

        api.node_register('node-99', obm={
                  "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                  "host": "ipmihost",
                  "user": "******",
                  "password": "******"})

        # throw BadArgumentError for an invalid bootdevice
        with pytest.raises(api.BadArgumentError):
            api.node_set_bootdev('node-99', 'invalid-device')
예제 #5
0
    def test_node_set_bootdev(self):
        nodes = self.collect_nodes()
        for node in nodes:
            # change a node's bootdevice to a valid boot device
            api.node_set_bootdev(node.label, 'pxe')
            api.node_set_bootdev(node.label, 'disk')
            api.node_set_bootdev(node.label, 'none')
            # set the bootdevice to something invalid
            with pytest.raises(api.BadArgumentError):
                api.node_set_bootdev(node.label, 'invalid-device')

        # register a node with erroneous ipmi details to raise OBMError
        api.node_register('node-99-z4qa63', obm={
                  "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                  "host": "ipmihost",
                  "user": "******",
                  "password": "******"})
        with pytest.raises(api.OBMError):
            api.node_set_bootdev('node-99-z4qa63', 'none')
예제 #6
0
    def test_node_set_bootdev(self):
        """Check that node_set_bootdev throws error for invalid devices."""

        api.node_register(
            node='node-99',
            obm={
                "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                "host": "ipmihost",
                "user": "******",
                "password": "******",
            },
            obmd={
                "uri": "http://obmd.example.com/nodes/node-99",
                "admin_token": "secret",
            },
        )

        # throw BadArgumentError for an invalid bootdevice
        with pytest.raises(errors.BadArgumentError):
            api.node_set_bootdev('node-99', 'invalid-device')
예제 #7
0
파일: ipmi.py 프로젝트: SahilTikale/hil
    def test_node_set_bootdev(self):
        """Check that node_set_bootdev throws error for invalid devices."""

        api.node_register(
            node='node-99',
            obm={
                "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                "host": "ipmihost",
                "user": "******",
                "password": "******",
            },
            obmd={
                "uri": "http://obmd.example.com/nodes/node-99",
                "admin_token": "secret",
            },
        )

        # throw BadArgumentError for an invalid bootdevice
        with pytest.raises(errors.BadArgumentError):
            api.node_set_bootdev('node-99', 'invalid-device')
예제 #8
0
파일: ipmi.py 프로젝트: SahilTikale/hil
    def test_node_set_bootdev(self):
        """Test setting the boot device."""
        nodes = self.collect_nodes()
        for node in nodes:
            # change a node's bootdevice to a valid boot device
            api.node_set_bootdev(node.label, 'pxe')
            api.node_set_bootdev(node.label, 'disk')
            api.node_set_bootdev(node.label, 'none')
            # set the bootdevice to something invalid
            with pytest.raises(api.BadArgumentError):
                api.node_set_bootdev(node.label, 'invalid-device')

        # register a node with erroneous ipmi details to raise OBMError
        # XXX: In theory, this could actually be a real node; we should take
        # some measure to ensure this never collides with something actually
        # in our test setup.
        api.node_register('node-99-z4qa63', obm={
                  "type": "http://schema.massopencloud.org/haas/v0/obm/ipmi",
                  "host": "ipmihost",
                  "user": "******",
                  "password": "******"})
        with pytest.raises(api.OBMError):
            api.node_set_bootdev('node-99-z4qa63', 'none')
예제 #9
0
def test_power_operations(mock_node):
    """Test the power-related obm api calls.

    i.e. power_off, power_cycle, set_bootdev.
    """
    # Obm is disabled; these should all fail:
    with pytest.raises(errors.BlockedError):
        api.node_power_off(mock_node)
    with pytest.raises(errors.BlockedError):
        api.node_power_on(mock_node)
    with pytest.raises(errors.BlockedError):
        api.node_set_bootdev(mock_node, 'A')
    with pytest.raises(errors.BlockedError):
        api.node_power_cycle(mock_node, force=True)
    with pytest.raises(errors.BlockedError):
        api.node_power_cycle(mock_node, force=False)

    # Now let's enable it and try again.
    api.node_enable_disable_obm(mock_node, enabled=True)

    def _power_cycle(force):
        _follow_redirect(
            'POST',
            api.node_power_cycle(mock_node, force=force),
            data=json.dumps({
                'force': force,
            }))

    _follow_redirect('POST', api.node_power_off(mock_node))
    _follow_redirect('POST', api.node_power_on(mock_node))
    _follow_redirect(
        'PUT',
        api.node_set_bootdev(mock_node, 'A'),
        data=json.dumps({'bootdev': 'A'}),
    )
    _power_cycle(True)
    _power_cycle(False)