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')
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
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')
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')
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')
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')
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')
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)