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 Summary
Nested ClassesModifier and TypeClassDescriptionfinal class
Access to the enablement-state of a board.static final class
Exception 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.DatabaseAwareBean
DatabaseAwareBean.AbstractSQL
-
Field Summary
Fields inherited from class uk.ac.manchester.spinnaker.alloc.db.SQLQueries
ADD_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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfindId
(int id) Look up a board for management.findIP
(@NotBlank String machine, @IPAddress String address) Look up a board for management.findPhysical
(@NotBlank String machine, @Valid @NotNull PhysicalCoords coords) Look up a board for management.findTriad
(@NotBlank String machine, @Valid TriadCoords coords) Look up a board for management.Read the serial number off a board.boolean
Test 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.void
readAllBoardSerialNumbers
(@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.void
setMachineState
(@NotBlank String machineName, boolean inService) Sets whether a machine is in service.void
updateAllBlacklists
(@NotBlank String machineName) Retrieve all blacklists, parse them, and store them in the DB's model.void
updateTags
(@NotBlank String machineName, Set<@NotBlank String> tags) Replace the tags on a machine with a given set.void
writeBlacklistToDB
(int boardId, @Valid Blacklist blacklist) Given a board, write a blacklist for it to the database.void
writeBlacklistToMachine
(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.DatabaseAwareBean
execute, executeRead, getConnection, getHistoricalConnection, isHistoricalDBAvailable
-
Constructor Details
-
MachineStateControl
public MachineStateControl()
-
-
Method Details
-
findId
Look 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
-
findTriad
public Optional<MachineStateControl.BoardState> findTriad(@NotBlank @NotBlank String machine, @Valid @NonNull @Valid TriadCoords coords) Look up a board for management.- Parameters:
machine
- The name of the machine.coords
- Triad coordinates- Returns:
- Board state manager
-
findPhysical
public Optional<MachineStateControl.BoardState> findPhysical(@NotBlank @NotBlank String machine, @Valid @NotNull @Valid @NotNull PhysicalCoords coords) Look up a board for management.- Parameters:
machine
- The name of the machine.coords
- Physical coordinates- Returns:
- Board state manager
-
findIP
public 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.
-
updateTags
Replace 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.
-
setMachineState
Sets whether a machine is in service.- Parameters:
machineName
- The name of the machine to controlinService
- Whether to put the machine in or out of service.
-
pullBlacklist
Retrieve 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.
-
pushBlacklist
Take 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.
-
readAllBoardSerialNumbers
Ensure that the database has the actual serial numbers of all boards in a machine.- Parameters:
machineName
- Which machine to read the serial numbers of.
-
updateAllBlacklists
Retrieve all blacklists, parse them, and store them in the DB's model.- Parameters:
machineName
- Which machine to get the blacklists of.
-
readBlacklistFromDB
Given 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.
-
writeBlacklistToDB
Given 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.
-
readBlacklistFromMachine
public 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.
-
writeBlacklistToMachine
public 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.
-
getSerialNumber
Read 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.
-
readTemperatureFromMachine
public 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.
-
isBlacklistSynched
Test 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.
-