Class Spalloc
java.lang.Object
uk.ac.manchester.spinnaker.alloc.db.SQLQueries
uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBean
uk.ac.manchester.spinnaker.alloc.allocator.Spalloc
- All Implemented Interfaces:
- SpallocAPI
The core implementation of the Spalloc service.
- Author:
- Donal Fellows
- 
Nested Class SummaryNested classes/interfaces inherited from class uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBeanDatabaseAwareBean.AbstractSQLNested classes/interfaces inherited from interface uk.ac.manchester.spinnaker.alloc.allocator.SpallocAPISpallocAPI.BoardLocation, SpallocAPI.CreateBoard, SpallocAPI.CreateDescriptor, SpallocAPI.CreateDimensions, SpallocAPI.CreateDimensionsAt, SpallocAPI.CreateNumBoards, SpallocAPI.CreateVisitor<T>, SpallocAPI.HasBoardCoords, SpallocAPI.Job, SpallocAPI.Jobs, SpallocAPI.Machine, SpallocAPI.SubMachine, SpallocAPI.Waitable
- 
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 TypeMethodDescriptioncreateJob(String owner, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Create a job for a user that is only in one group.createJobForNMPIJob(String owner, int nmpiJobId, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Create a job for interactive use in an NMPI Collab Session.createJobInCollabSession(String owner, String nmpiCollab, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Create a job for interactive use in an NMPI Collab Session.createJobInGroup(String owner, String groupName, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] req) Create a job for a user in a specific local group.voidemergencyStop(String commandCode) Get a specific job.getJobInfo(Permit permit, int id) Get a specific job.getJobs(boolean deleted, int limit, int start) List the jobs.getMachine(String name, boolean allowOutOfService) Get a specific machine.getMachineInfo(String machine, boolean allowOutOfService, Permit permit) Get info about a specific machine.getMachines(boolean allowOutOfService) List the machines.List the active jobs.listMachines(boolean allowOutOfService) List the machines.voidPurge the cache of what boards are down.voidreportProblem(String address, uk.ac.manchester.spinnaker.machine.HasChipLocation coreLocation, String description, Permit permit) Tells the service that there may be a problem with a board at a particular address.Methods inherited from class uk.ac.manchester.spinnaker.alloc.db.DatabaseAwareBeanexecute, executeRead, getConnection, getHistoricalConnection, isHistoricalDBAvailable
- 
Constructor Details- 
Spallocpublic Spalloc()
 
- 
- 
Method Details- 
getMachinesDescription copied from interface:SpallocAPIList the machines.- Specified by:
- getMachinesin interface- SpallocAPI
- Parameters:
- allowOutOfService- Whether to include machines marked as out of service.
- Returns:
- A mapping from names to machines (which are live objects).
 
- 
listMachinesDescription copied from interface:SpallocAPIList the machines.- Specified by:
- listMachinesin interface- SpallocAPI
- Parameters:
- allowOutOfService- Whether to include machines marked as out of service.
- Returns:
- A description of all the machines.
 
- 
getMachineDescription copied from interface:SpallocAPIGet a specific machine.- Specified by:
- getMachinein interface- SpallocAPI
- Parameters:
- name- The name of the machine to get.
- allowOutOfService- Whether to include machines marked as out of service.
- Returns:
- A machine, on which more operations can be done.
 
- 
getMachineInfopublic Optional<MachineDescription> getMachineInfo(String machine, boolean allowOutOfService, Permit permit) Description copied from interface:SpallocAPIGet info about a specific machine.- Specified by:
- getMachineInfoin interface- SpallocAPI
- Parameters:
- machine- The name of the machine to get.
- allowOutOfService- Whether to include machines marked as out of service.
- permit- Encodes what the caller may do.
- Returns:
- A machine description model.
 
- 
getJobsDescription copied from interface:SpallocAPIList the jobs.- Specified by:
- getJobsin interface- SpallocAPI
- Parameters:
- deleted- Whether to include deleted jobs in the list.
- limit- Maximum number of jobs in the returned list. Used for paging.
- start- How many jobs to skip past. Used for paging.
- Returns:
- A list of jobs.
 
- 
listJobsDescription copied from interface:SpallocAPIList the active jobs.- Specified by:
- listJobsin interface- SpallocAPI
- Parameters:
- permit- Encodes what the caller may do.
- Returns:
- A description of all the active jobs.
 
- 
getJob@PostFilter("#permit.admin or #permit.nmpiexec or #permit.name == filterObject.owner.orElse(null)") public Optional<SpallocAPI.Job> getJob(Permit permit, int id) Description copied from interface:SpallocAPIGet a specific job. Only owners or admins can see full job details or manipulate the job.- Specified by:
- getJobin interface- SpallocAPI
- Parameters:
- permit- Encodes what the caller may do.
- id- The identifier of the job.
- Returns:
- A job object on which more operations can be done, or empty if the job isn't there or isn't available to you.
 
- 
getJobInfo@PostFilter("#permit.admin or #permit.nmpiexec or #permit.name == filterObject.owner.orElse(null)") public Optional<JobDescription> getJobInfo(Permit permit, int id) Description copied from interface:SpallocAPIGet a specific job. Only owners or admins can see full job details or manipulate the job.- Specified by:
- getJobInfoin interface- SpallocAPI
- Parameters:
- permit- Encodes what the caller may do.
- id- The identifier of the job.
- Returns:
- A job description, or empty if the job isn't there (or isn't available to you).
 
- 
createJobInGrouppublic SpallocAPI.Job createJobInGroup(String owner, String groupName, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] req) throws IllegalArgumentException Description copied from interface:SpallocAPICreate a job for a user in a specific local group. Note that jobs cannot be created on machines that are out of service, but marking a machine as out of service does not stop the jobs that are already running on it.- Specified by:
- createJobInGroupin interface- SpallocAPI
- Parameters:
- owner- Who is making this job.
- groupName- What group is associated with this job for accounting purposes.
- descriptor- What sort of allocation is desired?
- machineName- The name of the machine the user wants to allocate on, or- nullif they want to select by tags.
- tags- The tags of the machine the user wants to allocate on, or- nullif they want to select by name.
- keepaliveInterval- The maximum interval between keepalive requests or the job becomes eligible for automated deletion.
- req- The serialized original request, which will be stored in the database for later retrieval.
- Returns:
- The job created.
- Throws:
- IllegalArgumentException- if the job could not be created.
 
- 
createJobpublic SpallocAPI.Job createJob(String owner, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Description copied from interface:SpallocAPICreate a job for a user that is only in one group. Note that jobs cannot be created on machines that are out of service, but marking a machine as out of service does not stop the jobs that are already running on it.- Specified by:
- createJobin interface- SpallocAPI
- Parameters:
- owner- Who is making this job.
- descriptor- What sort of allocation is desired?
- machineName- The name of the machine the user wants to allocate on, or- nullif they want to select by tags.
- tags- The tags of the machine the user wants to allocate on, or- nullif they want to select by name.
- keepaliveInterval- The maximum interval between keepalive requests or the job becomes eligible for automated deletion.
- originalRequest- The serialized original request, which will be stored in the database for later retrieval.
- Returns:
- The job created.
 
- 
createJobInCollabSessionpublic SpallocAPI.Job createJobInCollabSession(String owner, String nmpiCollab, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Description copied from interface:SpallocAPICreate a job for interactive use in an NMPI Collab Session. Note that jobs cannot be created on machines that are out of service, but marking a machine as out of service does not stop the jobs that are already running on it.- Specified by:
- createJobInCollabSessionin interface- SpallocAPI
- Parameters:
- owner- Who is making this job.
- nmpiCollab- The NMPI Collab to manage a session in, and from which the quota will be used.
- descriptor- What sort of allocation is desired?
- machineName- The name of the machine the user wants to allocate on, or- nullif they want to select by tags.
- tags- The tags of the machine the user wants to allocate on, or- nullif they want to select by name.
- keepaliveInterval- The maximum interval between keepalive requests or the job becomes eligible for automated deletion.
- originalRequest- The serialized original request, which will be stored in the database for later retrieval.
- Returns:
- The job created.
 
- 
createJobForNMPIJobpublic SpallocAPI.Job createJobForNMPIJob(String owner, int nmpiJobId, SpallocAPI.CreateDescriptor descriptor, String machineName, List<String> tags, Duration keepaliveInterval, byte[] originalRequest) Description copied from interface:SpallocAPICreate a job for interactive use in an NMPI Collab Session. Note that jobs cannot be created on machines that are out of service, but marking a machine as out of service does not stop the jobs that are already running on it.- Specified by:
- createJobForNMPIJobin interface- SpallocAPI
- Parameters:
- owner- Who is making this job.
- nmpiJobId- The NMPI Job to allocate the quota used to. The collab of the Job will be used for internal accounting purposes.
- descriptor- What sort of allocation is desired?
- machineName- The name of the machine the user wants to allocate on, or- nullif they want to select by tags.
- tags- The tags of the machine the user wants to allocate on, or- nullif they want to select by name.
- keepaliveInterval- The maximum interval between keepalive requests or the job becomes eligible for automated deletion.
- originalRequest- The serialized original request, which will be stored in the database for later retrieval.
- Returns:
- The job created.
 
- 
purgeDownCachepublic void purgeDownCache()Description copied from interface:SpallocAPIPurge the cache of what boards are down.- Specified by:
- purgeDownCachein interface- SpallocAPI
 
- 
reportProblempublic void reportProblem(String address, uk.ac.manchester.spinnaker.machine.HasChipLocation coreLocation, String description, Permit permit) Description copied from interface:SpallocAPITells the service that there may be a problem with a board at a particular address.- Specified by:
- reportProblemin interface- SpallocAPI
- Parameters:
- address- The IP address of the board. Note that we haven't yet identified which machine has the board.
- coreLocation- Where on the board is the problem. If the problem is at the core level, it's a- HasCoreLocation. If the problem is at the board level, this is- null.
- description- Optional problem description. May be- null.
- permit- Who is making the request.
 
- 
emergencyStop- Specified by:
- emergencyStopin interface- SpallocAPI
 
 
-