Class MachineStateControl
java.lang.Object
uk.ac.manchester.spinnaker.alloc.db.SQLQueries
uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBean
uk.ac.manchester.spinnaker.alloc.admin.MachineStateControl
How to manage the state of a machine and boards in it.
- Author:
- Donal Fellows
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionfinal classAccess to the enablement-state of a board.static final classException thrown when the machine state can't be read from or written to a BMP.Nested classes/interfaces inherited from class uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBeanDatabaseAwareBean.AbstractSQL
- 
Field SummaryFields inherited from class uk.ac.manchester.spinnaker.alloc.db.SQLQueriesADD_BLACKLISTED_CHIP, ADD_BLACKLISTED_CORE, ADD_BLACKLISTED_LINK, ADD_USER_TO_GROUP, ADJUST_QUOTA, ALLOCATE_BOARDS_BOARD, ALLOCATE_BOARDS_JOB, BUMP_IMPORTANCE, CHECK_LOCATION, checkRectangle, checkRectangleAt, CLEAR_BLACKLISTED_CHIPS, CLEAR_BLACKLISTED_CORES, CLEAR_BLACKLISTED_LINKS, COMPLETED_BLACKLIST_WRITE, COMPLETED_BOARD_INFO_READ, COMPLETED_GET_SERIAL_REQ, COUNT_CHANGES_FOR_JOB, COUNT_FUNCTIONING_BOARDS, COUNT_MACHINE_THINGS, COUNT_POWERED_BOARDS, countConnected, CREATE_BLACKLIST_READ, CREATE_BLACKLIST_WRITE, CREATE_GROUP, CREATE_GROUP_IF_NOT_EXISTS, CREATE_SERIAL_READ_REQ, CREATE_TEMP_READ_REQ, CREATE_USER, DEALLOCATE_BMP_BOARDS_JOB, DECREMENT_QUOTA, DELETE_ALLOC_RECORD, DELETE_BLACKLIST_OP, DELETE_GROUP, DELETE_JOB_RECORD, DELETE_MACHINE_TAGS, DELETE_NMPI_JOB, DELETE_NMPI_SESSION, DELETE_PENDING, DELETE_TASK, DELETE_USER, DESTROY_ALL_LIVE_JOBS, DESTROY_JOB, ERROR_PENDING, FAILED_BLACKLIST_OP, FIND_BOARD_BY_ID, FIND_BOARD_BY_NAME_AND_CFB, FIND_BOARD_BY_NAME_AND_IP_ADDRESS, FIND_BOARD_BY_NAME_AND_XYZ, FIND_EXPIRED_JOBS, FIND_FREE_BOARD, FIND_LOCATION, findBoardByGlobalChip, findBoardByIPAddress, findBoardByJobChip, findBoardByLogicalCoords, findBoardByPhysicalCoords, findRectangle, findRectangleAt, FINISHED_PENDING, GET_ALL_BMP_BOARDS, GET_ALL_BMPS, GET_ALL_BOARDS, GET_ALL_BOARDS_OF_ALL_MACHINES, GET_ALL_LIVE_JOBS, GET_ALL_MACHINES, GET_AVAILABLE_BOARD_NUMBERS, GET_BLACKLIST_READS, GET_BLACKLIST_WRITES, GET_BLACKLISTED_CHIPS, GET_BLACKLISTED_CORES, GET_BLACKLISTED_LINKS, GET_BMP_ADDRESS, GET_BMP_BOARD_NUMBERS, GET_BOARD_ADDRESS, GET_BOARD_BY_COORDS, GET_BOARD_CONNECT_INFO, GET_BOARD_JOB, GET_BOARD_NUMBERS, GET_BOARD_POWER_INFO, GET_BOARD_REPORTS, GET_CHANGES, GET_COMPLETED_BLACKLIST_OP, GET_CONSOLIDATION_TARGETS, GET_CURRENT_USAGE, GET_DEAD_BOARDS, GET_FUNCTIONING_FIELD, GET_GROUP_BY_ID, GET_GROUP_BY_NAME, GET_GROUP_BY_NAME_AND_MEMBER, GET_GROUP_NAMES_OF_USER, GET_GROUP_QUOTA, GET_JOB, GET_JOB_BOARD_COORDS, GET_JOB_BOARDS, GET_JOB_CHIP_DIMENSIONS, GET_JOB_IDS, GET_JOB_NMPI_JOB, GET_JOB_SESSION, GET_JOB_USAGE_AND_QUOTA, GET_LIVE_BOARDS, GET_LIVE_JOB_IDS, GET_LOCAL_USER_DETAILS, GET_MACHINE_BY_ID, GET_MACHINE_JOBS, GET_MACHINE_REPORTS, GET_MACHINE_WRAPS, GET_MEMBERSHIP, GET_MEMBERSHIPS_OF_USER, GET_NAMED_MACHINE, GET_ROOT_BMP_ADDRESS, GET_ROOT_COORDS, GET_ROOT_OF_BOARD, GET_SERIAL_INFO_REQS, GET_SUM_BOARDS_POWERED, GET_TAGS, GET_TEMP_INFO_REQS, GET_USER_AUTHORITIES, GET_USER_DETAILS, GET_USER_DETAILS_BY_NAME, GET_USER_DETAILS_BY_SUBJECT, GET_USER_ID, GET_USER_QUOTA, GET_USERS_OF_GROUP, getAllocationTasks, getConnectedBoards, getDeadLinks, getJobsWithChanges, getPerimeterLinks, getReportedBoards, GROUP_SYNC_ADD_GROUPS, GROUP_SYNC_DROP_TEMP_TABLE, GROUP_SYNC_INSERT_TEMP_ROW, GROUP_SYNC_MAKE_TEMP_TABLE, GROUP_SYNC_REMOVE_GROUPS, INSERT_BMP, INSERT_BOARD, INSERT_BOARD_REPORT, INSERT_JOB, INSERT_LINK, INSERT_MACHINE_SPINN_5, INSERT_REQ_BOARD, INSERT_REQ_N_BOARDS, INSERT_REQ_SIZE, INSERT_REQ_SIZE_BOARD, INSERT_TAG, IS_BOARD_BLACKLIST_CURRENT, IS_USER_LOCKED, issueChangeForJob, KILL_ALL_JOB_ALLOC_TASK, KILL_JOB_ALLOC_TASK, LIST_ALL_GROUPS, LIST_ALL_GROUPS_OF_TYPE, LIST_ALL_USERS, LIST_ALL_USERS_OF_TYPE, LIST_LIVE_JOBS, LIST_MACHINE_NAMES, LOAD_DIR_INFO, MARK_BOARD_BLACKLIST_CHANGED, MARK_BOARD_BLACKLIST_SYNCHED, MARK_CONSOLIDATED, MARK_LOGIN_FAILURE, MARK_LOGIN_SUCCESS, NOTE_DESTROY_REASON, READ_HISTORICAL_ALLOCS, READ_HISTORICAL_JOBS, REMOVE_USER_FROM_GROUP, SET_ALL_BOARDS_OFF, SET_BOARD_POWER_OFF, SET_BOARD_POWER_ON, SET_BOARD_SERIAL_IDS, SET_COLLAB_QUOTA, SET_FUNCTIONING_FIELD, SET_JOB_NMPI_JOB, SET_JOB_SESSION, SET_MACHINE_STATE, SET_MAX_COORDS, SET_STATE_DESTROYED, SET_STATE_PENDING, SET_USER_DISABLED, SET_USER_LOCKED, SET_USER_NAME, SET_USER_PASS, SET_USER_TRUST, UNLOCK_LOCKED_USERS, UPDATE_GROUP, UPDATE_KEEPALIVE, WRITE_HISTORICAL_ALLOCS, WRITE_HISTORICAL_JOBS
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionfindId(int id) Look up a board for management.Look up a board for management.findPhysical(@NotBlank String machine, @Valid @NotNull uk.ac.manchester.spinnaker.machine.board.PhysicalCoords coords) Look up a board for management.findTriad(@NotBlank String machine, @Valid uk.ac.manchester.spinnaker.machine.board.TriadCoords coords) Look up a board for management.Read the serial number off a board.booleanTest whether a board's blacklist is believed to be synchronised to the hardware.pullBlacklist(int boardId, int bmpId) Retrieve the blacklist for the given board from the board and store it in the database.Take the blacklist for the given board in the database and write it to the board.voidreadAllBoardSerialNumbers(@NotBlank String machineName) Ensure that the database has the actual serial numbers of all boards in a machine.Given a board, read its blacklist from the database.readBlacklistFromMachine(int boardId, int bmpId) Given a board, read its blacklist off the machine.readTemperatureFromMachine(int boardId, int bmpId) Given a board, read its temperature data off the machine.voidsetMachineState(@NotBlank String machineName, boolean inService) Sets whether a machine is in service.voidupdateAllBlacklists(@NotBlank String machineName) Retrieve all blacklists, parse them, and store them in the DB's model.voidupdateTags(@NotBlank String machineName, Set<@NotBlank String> tags) Replace the tags on a machine with a given set.voidwriteBlacklistToDB(int boardId, @Valid Blacklist blacklist) Given a board, write a blacklist for it to the database.voidwriteBlacklistToMachine(int boardId, int bmpId, @Valid Blacklist blacklist) Write a blacklist to a board on the machine.Methods inherited from class uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBeanexecute, executeRead, getConnection, getHistoricalConnection, isHistoricalDBAvailable
- 
Constructor Details- 
MachineStateControlpublic MachineStateControl()
 
- 
- 
Method Details- 
findIdLook up a board for management.- Parameters:
- id- The unique ID of the board. Because this is fully unique, the machine name is not needed.
- Returns:
- Board state manager
 
- 
findTriadpublic Optional<MachineStateControl.BoardState> findTriad(@NotBlank @NotBlank String machine, @Valid @NonNull @Valid uk.ac.manchester.spinnaker.machine.board.TriadCoords coords) Look up a board for management.- Parameters:
- machine- The name of the machine.
- coords- Triad coordinates
- Returns:
- Board state manager
 
- 
findPhysicalpublic Optional<MachineStateControl.BoardState> findPhysical(@NotBlank @NotBlank String machine, @Valid @NotNull @Valid @NotNull uk.ac.manchester.spinnaker.machine.board.PhysicalCoords coords) Look up a board for management.- Parameters:
- machine- The name of the machine.
- coords- Physical coordinates
- Returns:
- Board state manager
 
- 
findIPpublic Optional<MachineStateControl.BoardState> findIP(@NotBlank @NotBlank String machine, @IPAddress @IPAddress String address) Look up a board for management.- Parameters:
- machine- The name of the machine.
- address- Board IP address
- Returns:
- Board state manager
 
- 
getMachineTagging- Returns:
- The mapping from machine names+IDs to tags.
 
- 
getMachineReports- Returns:
- The unacknowledged reports about boards with potential problems in existing machines, categorised by machine.
 
- 
updateTagsReplace the tags on a machine with a given set.- Parameters:
- machineName- The name of the machine to update the tags of.
- tags- The tags to apply. Existing tags will be removed.
- Throws:
- IllegalArgumentException- If the machine with that name doesn't exist.
 
- 
setMachineStateSets whether a machine is in service.- Parameters:
- machineName- The name of the machine to control
- inService- Whether to put the machine in or out of service.
 
- 
pullBlacklistRetrieve the blacklist for the given board from the board and store it in the database.- Parameters:
- boardId- The board to get the blacklist of.
- bmpId- The BMP of the board.
- Returns:
- The blacklist that was transferred, if any.
 
- 
pushBlacklistTake the blacklist for the given board in the database and write it to the board.- Parameters:
- board- The board to set the blacklist of.
- Returns:
- The blacklist that was transferred, if any.
 
- 
readAllBoardSerialNumbersEnsure that the database has the actual serial numbers of all boards in a machine.- Parameters:
- machineName- Which machine to read the serial numbers of.
 
- 
updateAllBlacklistsRetrieve all blacklists, parse them, and store them in the DB's model.- Parameters:
- machineName- Which machine to get the blacklists of.
 
- 
readBlacklistFromDBGiven a board, read its blacklist from the database.- Parameters:
- board- Which board to read the blacklist of.
- Returns:
- The board's blacklist.
- Throws:
- DataAccessException- If access to the DB fails.
 
- 
writeBlacklistToDBGiven a board, write a blacklist for it to the database. Does not push the blacklist to the board.- Parameters:
- boardId- The ID of the board to write.
- blacklist- The blacklist to write.
- Throws:
- DataAccessException- If access to the DB fails.
 
- 
readBlacklistFromMachinepublic Optional<Blacklist> readBlacklistFromMachine(int boardId, int bmpId) throws InterruptedException Given a board, read its blacklist off the machine.- Parameters:
- boardId- Which board to read the blacklist of.
- bmpId- The BMP of the board.
- Returns:
- The board's blacklist.
- Throws:
- DataAccessException- If access to the DB fails.
- MachineStateControl.MachineStateException- If the read fails.
- InterruptedException- If interrupted.
 
- 
writeBlacklistToMachinepublic void writeBlacklistToMachine(int boardId, int bmpId, @Valid @Valid Blacklist blacklist) throws InterruptedException Write a blacklist to a board on the machine.- Parameters:
- boardId- Which board to write the blacklist of.
- bmpId- Which BMP the board belongs to.
- blacklist- The blacklist to write.
- Throws:
- DataAccessException- If access to the DB fails.
- MachineStateControl.MachineStateException- If the write fails.
- InterruptedException- If interrupted. Note that interrupting the thread does not necessarily halt the write of the blacklist.
 
- 
getSerialNumberRead the serial number off a board.- Parameters:
- board- Which board to get the serial number of.
- Returns:
- The serial number.
- Throws:
- DataAccessException- If access to the DB fails.
- MachineStateControl.MachineStateException- If the write fails.
- InterruptedException- If interrupted.
 
- 
readTemperatureFromMachinepublic Optional<ADCInfo> readTemperatureFromMachine(int boardId, int bmpId) throws InterruptedException Given a board, read its temperature data off the machine.- Parameters:
- boardId- Which board to read the temperature data of.
- bmpId- The BMP that controls the board.
- Returns:
- The board's temperature data.
- Throws:
- DataAccessException- If access to the DB fails.
- MachineStateControl.MachineStateException- If the read fails.
- InterruptedException- If interrupted.
 
- 
isBlacklistSynchedTest whether a board's blacklist is believed to be synchronised to the hardware.- Parameters:
- board- Which board?
- Returns:
- True if the synch has happened, i.e., the time the blacklist data was changed is no later than the last time the synch happened.
 
 
-