Class AgentJobServiceImpl

    • Constructor Detail

      • AgentJobServiceImpl

        public AgentJobServiceImpl​(DataServices dataServices,
                                   JobResolverService jobResolverService,
                                   AgentFilterService agentFilterService,
                                   AgentConfigurationService agentConfigurationService,
                                   io.micrometer.core.instrument.MeterRegistry meterRegistry)
        Constructor.
        Parameters:
        dataServices - The DataServices instance to use
        jobResolverService - The specification service to use
        agentFilterService - The agent filter service to use
        agentConfigurationService - The agent configuration service
        meterRegistry - The metrics registry to use
    • Method Detail

      • getAgentProperties

        public java.util.Map<java.lang.String,​java.lang.String> getAgentProperties​(@Valid
                                                                                         @Valid AgentClientMetadata agentClientMetadata)
        Provide configuration properties for an agent that is beginning to execute a job.
        Specified by:
        getAgentProperties in interface AgentJobService
        Parameters:
        agentClientMetadata - The metadata about the agent starting to run a given job
        Returns:
        a map of properties for the agent
      • reserveJobId

        public java.lang.String reserveJobId​(@Valid
                                             @Valid JobRequest jobRequest,
                                             @Valid
                                             @Valid AgentClientMetadata agentClientMetadata)
        Reserve a job id and persist job details in the database based on the supplied JobRequest.
        Specified by:
        reserveJobId in interface AgentJobService
        Parameters:
        jobRequest - The job request containing all the metadata needed to reserve a job id
        agentClientMetadata - The metadata about the agent driving this job request
        Returns:
        The unique id of the job which was saved in the database
      • getJobSpecification

        @Transactional(readOnly=true)
        public JobSpecification getJobSpecification​(@NotBlank
                                                    @NotBlank java.lang.String id)
        Get a job specification if has been resolved.
        Specified by:
        getJobSpecification in interface AgentJobService
        Parameters:
        id - the id of the job to retrieve the specification for
        Returns:
        The job specification for the job
      • dryRunJobSpecificationResolution

        @Transactional(readOnly=true)
        public JobSpecification dryRunJobSpecificationResolution​(@Valid
                                                                 @Valid JobRequest jobRequest)
                                                          throws GenieJobResolutionException
        Run the job specification resolution algorithm on the given input but save nothing in the system.
        Specified by:
        dryRunJobSpecificationResolution in interface AgentJobService
        Parameters:
        jobRequest - The job request containing all the metadata needed to resolve a job specification
        Returns:
        The job specification that would have been resolved for the given input
        Throws:
        GenieJobResolutionException - On error resolving the job given the input parameters and system state
      • claimJob

        public void claimJob​(@NotBlank
                             @NotBlank java.lang.String id,
                             @Valid
                             @Valid AgentClientMetadata agentClientMetadata)
        Set a job identified by id to be owned by the agent identified by agentClientMetadata. The job status in the system will be set to JobStatus.CLAIMED
        Specified by:
        claimJob in interface AgentJobService
        Parameters:
        id - The id of the job to claim. Must exist in the system.
        agentClientMetadata - The metadata about the client claiming the job
      • updateJobStatus

        public void updateJobStatus​(@NotBlank
                                    @NotBlank java.lang.String id,
                                    JobStatus currentStatus,
                                    JobStatus newStatus,
                                    @Nullable
                                    java.lang.String newStatusMessage)
        Update the status of the job identified with id to be newStatus provided that the current status of the job matches newStatus. Optionally a status message can be provided to provide more details to users. If the newStatus is JobStatus.RUNNING the start time will be set. If the newStatus is a member of JobStatus.getFinishedStatuses() and the job had a started time set the finished time of the job will be set.
        Specified by:
        updateJobStatus in interface AgentJobService
        Parameters:
        id - The id of the job to update status for. Must exist in the system.
        currentStatus - The status the caller to this API thinks the job currently has
        newStatus - The new status the caller would like to update the status to
        newStatusMessage - An optional status message to associate with this change
      • getJobStatus

        public JobStatus getJobStatus​(@NotBlank
                                      @NotBlank java.lang.String id)
        Retrieve the status of the job identified with id.
        Specified by:
        getJobStatus in interface AgentJobService
        Parameters:
        id - The id of the job to look up.
        Returns:
        the current status of the job, as seen by this node
      • updateJobArchiveStatus

        public void updateJobArchiveStatus​(@NotBlank
                                           @NotBlank java.lang.String id,
                                           ArchiveStatus newArchiveStatus)
        Update the archive status status of the job identified with id to be newStatus. Notice this is a 'blind write', the currently persisted value will always be overwritten.
        Specified by:
        updateJobArchiveStatus in interface AgentJobService
        Parameters:
        id - The id of the job to update status for. Must exist in the system.
        newArchiveStatus - The new archive status the caller would like to update the status to