Class SecuredBuildQueue

    • Constructor Detail

      • SecuredBuildQueue

        public SecuredBuildQueue()
    • Method Detail

      • setDelegate

        public void setDelegate​(@NotNull
                                BuildQueueEx delegate)
      • setSecurityContext

        public void setSecurityContext​(@NotNull
                                       SecurityContextEx securityContext)
      • removeAllFromQueue

        public void removeAllFromQueue​(String buildTypeId)
        Description copied from interface: BuildQueueEx
        Removes all items from the queue which correspond to specified build configuration.
        Specified by:
        removeAllFromQueue in interface BuildQueueEx
        Parameters:
        buildTypeId - id of build configuration
      • removeAllFromQueue

        public void removeAllFromQueue​(String buildTypeId,
                                       SUser user,
                                       String comment)
        Description copied from interface: BuildQueueEx
        Removes all items from the queue which correspond to specified build configuration.
        Specified by:
        removeAllFromQueue in interface BuildQueueEx
        Parameters:
        buildTypeId - id of build configuration
        user - user
        comment - comment
      • getOrderNumber

        public int getOrderNumber​(@NotNull
                                  SQueuedBuild queuedBuild)
        Description copied from interface: BuildQueueEx
        Returns order number of the specified queued build
        Specified by:
        getOrderNumber in interface BuildQueueEx
        Parameters:
        queuedBuild - queued build
        Returns:
        order number or 0 if specified queued build does not exist
      • mergeBuilds

        public boolean mergeBuilds​(@Nullable
                                   Predicate<SQueuedBuild> queuedBuildsFilter)
        Description copied from interface: BuildQueueEx
        Optimizes build queue by removing builds which can be safely substituted by newer builds added to the queue.
        Specified by:
        mergeBuilds in interface BuildQueueEx
        Parameters:
        queuedBuildsFilter - filter to apply to the queue builds, if the filter returns false then the queued build won't participate in the optimization, if null then all currently queued builds will be optimized
        Returns:
        true if queue was changed and false otherwise
      • optimizeChains

        public boolean optimizeChains​(@NotNull
                                      List<BuildPromotionEx> buildPromotions)
        Description copied from interface: BuildQueueEx
        Optimizes build chains, i.e. reassigns builds to started builds if possible. If during optimization some of the build promotions are removed from the chains, their queued builds will be removed from the queue as well.
        Specified by:
        optimizeChains in interface BuildQueueEx
        Parameters:
        buildPromotions - build promotions to optimize
        Returns:
        true if at least one build was removed from the queue as a result of optimization
      • restoreInQueue

        public List<QueuedBuildEx> restoreInQueue​(@NotNull
                                                  BuildPromotionEx promo,
                                                  @Nullable
                                                  SAgentRestrictor agentRestrictor,
                                                  @NotNull
                                                  String rawTriggeredBy)
        Description copied from interface: BuildQueueEx
        Re-adds build into the queue. A copy of specified build promotion will be created, if there were snapshot dependencies on the original build they will be moved to the new one.
        Specified by:
        restoreInQueue in interface BuildQueueEx
        Parameters:
        promo - original promo
        agentRestrictor - agent restrictor
        rawTriggeredBy - triggered by
        Returns:
        newly added queued builds
      • applyOrder

        public void applyOrder​(@NotNull
                               String[] itemIds)
        Description copied from interface: BuildQueue
        Applies new order to the build queue.
        Specified by:
        applyOrder in interface BuildQueue
        Parameters:
        itemIds - new order of queue items
      • moveTop

        public void moveTop​(String itemId)
        Description copied from interface: BuildQueue
        Moves specified item to the top of the queue.
        Specified by:
        moveTop in interface BuildQueue
        Parameters:
        itemId - id of the item to move to the top of the queue
      • moveBottom

        public void moveBottom​(String itemId)
        Description copied from interface: BuildQueue
        Moves specified item to the bottom of the queue.
        Specified by:
        moveBottom in interface BuildQueue
        Parameters:
        itemId - id of the item to move to the bottom of the queue
      • getItems

        @NotNull
        public List<SQueuedBuild> getItems()
        Description copied from interface: BuildQueue
        Returns all queued items.
        Specified by:
        getItems in interface BuildQueue
        Returns:
        list of currently queued items.
      • getItems

        @NotNull
        public List<SQueuedBuild> getItems​(String buildTypeId)
        Description copied from interface: BuildQueue
        Returns all items currently waiting in queue corresponding to specified build configuration id.
        Specified by:
        getItems in interface BuildQueue
        Parameters:
        buildTypeId - specified build configuration.
        Returns:
        all items currently waiting in queue corresponding to specified build configuration id.
      • getItemsByPool

        @NotNull
        public List<SQueuedBuild> getItemsByPool​(int agentPoolId)
        Description copied from interface: BuildQueueEx
        Returns all items currently waiting in queue corresponding to the specified agent pool.
        Specified by:
        getItemsByPool in interface BuildQueueEx
        Parameters:
        agentPoolId - agent pool id
        Returns:
        see above
      • getNumberOfItemsByPool

        public int getNumberOfItemsByPool​(int agentPoolId)
        Description copied from interface: BuildQueueEx
        Returns number of items currently waiting in queue corresponding to the specified agent pool.
        Specified by:
        getNumberOfItemsByPool in interface BuildQueueEx
        Returns:
        number of items currently waiting in queue corresponding to the specified agent pool.
      • shouldCollectChangesInQueue

        public boolean shouldCollectChangesInQueue​(@NotNull
                                                   BuildPromotionEx promotion)
        Description copied from interface: BuildQueueEx
        Returns true if changes should be collected for specified promotion while it is in build queue
        Specified by:
        shouldCollectChangesInQueue in interface BuildQueueEx
        Parameters:
        promotion - build promotion of interest
        Returns:
        see above
      • getNumberOfItems

        public int getNumberOfItems()
        Description copied from interface: BuildQueue
        Returns number of items currently in the queue
        Specified by:
        getNumberOfItems in interface BuildQueue
        Returns:
        number of items currently in the queue
      • findQueued

        @Nullable
        public QueuedBuildEx findQueued​(@NotNull
                                        String buildTypeId,
                                        Integer agentId)
        Description copied from interface: BuildQueue
        Looks for build configuration with specified id scheduled to run on specified agent in the queue.
        Specified by:
        findQueued in interface BuildQueue
        Specified by:
        findQueued in interface BuildQueueEx
        Parameters:
        buildTypeId - id of build configuration to search for
        agentId - id of the agent. If not null only build configuration scheduled to specified agent will be returned. If null then build configuration which is not scheduled to any specific agent is returned.
        Returns:
        found item or null
      • findQueued

        @Nullable
        public QueuedBuildEx findQueued​(@NotNull
                                        String itemId)
        Description copied from interface: BuildQueue
        Searches for an item in queue with specified item id.
        Specified by:
        findQueued in interface BuildQueue
        Specified by:
        findQueued in interface BuildQueueEx
        Parameters:
        itemId - id of the item to look for.
        Returns:
        found item or null
      • isInQueue

        public boolean isInQueue​(@NotNull
                                 String buildTypeId)
        Description copied from interface: BuildQueue
        Returns true if build configuration is already in queue.
        Specified by:
        isInQueue in interface BuildQueue
        Parameters:
        buildTypeId - id of build configuration
        Returns:
        if the specified configuration is in the queue.
      • isQueueEmpty

        public boolean isQueueEmpty()
        Description copied from interface: BuildQueue
        Checks if queue is empty.
        Specified by:
        isQueueEmpty in interface BuildQueue
        Returns:
        true if queue is empty.
      • getFirst

        @Nullable
        public SQueuedBuild getFirst()
        Description copied from interface: BuildQueue
        Returns first queue element.
        Specified by:
        getFirst in interface BuildQueue
        Returns:
        first queue element, null is queue is empty.
      • getLast

        @Nullable
        public SQueuedBuild getLast()
        Description copied from interface: BuildQueue
        Returns last queue element.
        Specified by:
        getLast in interface BuildQueue
        Returns:
        last queue element, null is queue is empty.
      • removeItems

        public void removeItems​(@NotNull
                                Collection<String> itemIds,
                                @Nullable
                                SUser user,
                                @Nullable
                                String comment)
        Description copied from interface: BuildQueue
        Removes items with specified ids from the queue
        Specified by:
        removeItems in interface BuildQueue
        Parameters:
        itemIds - ids items to remove
        user - user who performs operation
        comment - comment to use for remove operation
      • removeQueuedBuilds

        public void removeQueuedBuilds​(@NotNull
                                       Collection<SQueuedBuild> items,
                                       @Nullable
                                       SUser user,
                                       @Nullable
                                       String comment)
        Description copied from interface: BuildQueue
        Removes specified items from the queue
        Specified by:
        removeQueuedBuilds in interface BuildQueue
        Parameters:
        items - items to remove
        user - user who performs operation
        comment - comment to use for remove operation
      • removeMatchedItems

        public void removeMatchedItems​(@NotNull
                                       Filter<SQueuedBuild> itemsFilter,
                                       @Nullable
                                       SUser user,
                                       @Nullable
                                       String comment)
        Description copied from interface: BuildQueueEx
        Removes items matched by the specified filter from the queue
        Specified by:
        removeMatchedItems in interface BuildQueueEx
        Parameters:
        itemsFilter - queue items filter
        user - user who performs operation, if user is not null then build will be cancelled, otherwise it can be completely removed if there are no started builds depending on it
        comment - comment to use for remove operation
      • cancelMatchedItems

        public void cancelMatchedItems​(@NotNull
                                       Filter<SQueuedBuild> itemsFilter,
                                       @Nullable
                                       SUser user,
                                       @Nullable
                                       String comment)
        Description copied from interface: BuildQueueEx
        Removes and cancels items matched by the specified filter. The main difference of this method and BuildQueueEx.removeMatchedItems(Filter, SUser, String) is that this method always creates cancelled builds in history for removed queued items, while removeMatchedItems can skip creating cancelled builds if user is not specified
        Specified by:
        cancelMatchedItems in interface BuildQueueEx
        Parameters:
        itemsFilter - queue items filter
        user - user who performs operation
        comment - comment to use for remove operation
      • terminateQueuedBuild

        public void terminateQueuedBuild​(@NotNull
                                         SQueuedBuild queuedBuild,
                                         @Nullable
                                         SUser user,
                                         boolean isCanceled,
                                         @Nullable
                                         String comment,
                                         @NotNull
                                         BuildProblemData buildProblemData)
        Description copied from interface: BuildQueueEx
        Removes specified queued build from the queue and creates a history build entry for it.
        Specified by:
        terminateQueuedBuild in interface BuildQueueEx
        Parameters:
        queuedBuild - a queued build to terminate
        user - user who performs operation
        isCanceled - whether to create cancelation info for a history build entry. Status of the created build is also detrmined by this parameter: true->UNKNOWN, false->FAILURE.
        comment - comment to use for logging during remove operation as well as cancellation info comment if 'isCanceled' is true
        buildProblemData - build problem to add to the history build
      • addToQueue

        @NotNull
        public List<QueuedBuildEx> addToQueue​(@NotNull
                                              Map<BuildPromotionEx,​SAgentRestrictor> promoAgentRestrictorMap,
                                              @NotNull
                                              String rawTriggeredBy)
        Description copied from interface: BuildQueueEx
        Adds promotions to the queue with corresponding agent restrictors (if agent restrictor is null then no agent restrictor is used). If same build is already in queue then new build is not added. If promotion has associated graph then it must be top of this graph. All nodes of the graph will be added in the queue. If chains passed to this method intersects in personal build nodes then only one personal build will be added in queue for each intersection. Returns newly added builds and currently queued builds for not added builds.
        Specified by:
        addToQueue in interface BuildQueueEx
        Parameters:
        promoAgentRestrictorMap - map of top promotion to agent restrictors
        rawTriggeredBy - triggered by
        Returns:
        see above
      • newTriggerTask

        @NotNull
        public TriggerTask newTriggerTask​(@NotNull
                                          BuildPromotion promotion)
        Description copied from interface: BatchTrigger
        Creates new trigger task based on specified build promotion.
        Specified by:
        newTriggerTask in interface BatchTrigger
        Parameters:
        promotion - build promotion which will be added to the queue
        Returns:
        new task
      • processTasks

        @NotNull
        public List<SQueuedBuild> processTasks​(@NotNull
                                               Collection<TriggerTask> tasks,
                                               @NotNull
                                               String triggeredBy)
        Description copied from interface: BatchTrigger
        Processes collection of trigger tasks, by adding builds in the queue with parameters specified in these tasks.
        Specified by:
        processTasks in interface BatchTrigger
        Parameters:
        tasks - trigger tasks describing how to add builds in the queue
        triggeredBy - some information about who triggers these builds
        Returns:
        list of queued builds, sorted by their order number in the queue
      • moveDependenciesToTop

        public void moveDependenciesToTop​(@NotNull
                                          BuildPromotion promotion)
        Description copied from interface: BuildQueueEx
        Moves dependencies of given promotion to the top of the queue
        Specified by:
        moveDependenciesToTop in interface BuildQueueEx
        Parameters:
        promotion - build promotion
      • scheduleBuildQueueReload

        public void scheduleBuildQueueReload()
        Description copied from interface: BuildQueueEx
        Sends event to reload queue from database (for debug API, TW-85394)
        Specified by:
        scheduleBuildQueueReload in interface BuildQueueEx