|
@@ -436,6 +436,8 @@ async def release_board(board_id, user: str = Depends(lookup_user), |
|
|
board=Board.from_orm(brd)), |
|
|
board=Board.from_orm(brd)), |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
await brd.deactivate() |
|
|
|
|
|
|
|
|
env = os.environ.copy() |
|
|
env = os.environ.copy() |
|
|
addkeys = { 'iface', 'ip', 'devfsrule', 'devfspath' } |
|
|
addkeys = { 'iface', 'ip', 'devfsrule', 'devfspath' } |
|
|
env.update((k, brd.attrs[k]) for k in addkeys if k in brd.attrs) |
|
|
env.update((k, brd.attrs[k]) for k in addkeys if k in brd.attrs) |
|
@@ -608,10 +610,11 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): |
|
|
self.assertEqual(res.json(), { 'cora-z7s': BoardClassInfo(**{ |
|
|
self.assertEqual(res.json(), { 'cora-z7s': BoardClassInfo(**{ |
|
|
'arch': 'arm-armv7', 'clsname': 'cora-z7s', }) }) |
|
|
'arch': 'arm-armv7', 'clsname': 'cora-z7s', }) }) |
|
|
|
|
|
|
|
|
|
|
|
@patch('bitelab.BoardImpl.deactivate') |
|
|
@patch('asyncio.create_subprocess_exec') |
|
|
@patch('asyncio.create_subprocess_exec') |
|
|
@patch('bitelab.snmp.snmpget') |
|
|
@patch('bitelab.snmp.snmpget') |
|
|
@patch('logging.error') |
|
|
@patch('logging.error') |
|
|
async def test_board_release_script_fail(self, le, sg, cse): |
|
|
|
|
|
|
|
|
async def test_board_release_script_fail(self, le, sg, cse, bideact): |
|
|
# that when snmpget returns False |
|
|
# that when snmpget returns False |
|
|
sg.return_value = False |
|
|
sg.return_value = False |
|
|
|
|
|
|
|
@@ -655,10 +658,11 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): |
|
|
# and that the error got logged |
|
|
# and that the error got logged |
|
|
le.assert_called_with('release script failure: board: \'cora-1\', ret: 1, stderr: b\'error\'') |
|
|
le.assert_called_with('release script failure: board: \'cora-1\', ret: 1, stderr: b\'error\'') |
|
|
|
|
|
|
|
|
|
|
|
@patch('bitelab.BoardImpl.deactivate') |
|
|
@patch('bitelab.BoardImpl.activate') |
|
|
@patch('bitelab.BoardImpl.activate') |
|
|
@patch('asyncio.create_subprocess_exec') |
|
|
@patch('asyncio.create_subprocess_exec') |
|
|
@patch('bitelab.snmp.snmpget') |
|
|
@patch('bitelab.snmp.snmpget') |
|
|
async def test_board_reserve_release(self, sg, cse, biact): |
|
|
|
|
|
|
|
|
async def test_board_reserve_release(self, sg, cse, biact, bideact): |
|
|
# that when releasing a board that is not yet reserved |
|
|
# that when releasing a board that is not yet reserved |
|
|
res = await self.client.post('/board/cora-1/release', |
|
|
res = await self.client.post('/board/cora-1/release', |
|
|
auth=BiteAuth('anotherlongapikey')) |
|
|
auth=BiteAuth('anotherlongapikey')) |
|
@@ -786,6 +790,9 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): |
|
|
'cora-1', 'foo', env=env, |
|
|
'cora-1', 'foo', env=env, |
|
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
|
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
|
|
|
|
|
|
|
|
|
|
|
# and deactivated attributes |
|
|
|
|
|
bideact.assert_called() |
|
|
|
|
|
|
|
|
# that it can be reserved by a different user |
|
|
# that it can be reserved by a different user |
|
|
res = await self.client.post('/board/cora-1/reserve', |
|
|
res = await self.client.post('/board/cora-1/reserve', |
|
|
auth=BiteAuth('anotherlongapikey')) |
|
|
auth=BiteAuth('anotherlongapikey')) |
|
|