Interface DeploymentProjectService

  • All Known Implementing Classes:
    DeploymentProjectServiceImpl

    @PublicApi
    public interface DeploymentProjectService
    Service to provide access to all things Deployment Project, And Project Item.
    • Method Detail

      • getAllDeploymentProjects

        @NotNull
        @NotNull List<DeploymentProject> getAllDeploymentProjects()
        Returns:
        a list of all deployment projects
      • getDeploymentProjectsRelatedToPlan

        @NotNull
        @NotNull List<DeploymentProject> getDeploymentProjectsRelatedToPlan​(@NotNull
                                                                            @NotNull PlanKey planKey)
        Retrieve the deployment projects that are linked to a specific plan
        Parameters:
        planKey - of the linked plan
        Returns:
        a list of all deployment projects linked to a specified plan
      • getDeploymentProjectsRelatedToPlanOrBranches

        @NotNull
        @NotNull List<DeploymentProject> getDeploymentProjectsRelatedToPlanOrBranches​(@NotNull
                                                                                      @NotNull PlanKey masterOrBranchPlanKey)
        Retrieve the deployment projects that are linked to a specific plan or any of its branches. Use with care: it will include the whole 'family', including deployments related to divergent branches. See also: getDeploymentProjectsRelatedToPlanConfiguration(PlanKey)
        Parameters:
        masterOrBranchPlanKey - identifies master plan or branch
        Returns:
        a list of all deployment projects linked to a specified plan or any of its branches
      • getDeploymentProjectsRelatedToPlanConfiguration

        @NotNull
        @NotNull List<DeploymentProject> getDeploymentProjectsRelatedToPlanConfiguration​(@NotNull
                                                                                         @NotNull PlanKey masterOrBranchPlanKey)
        Retrieve the deployment projects that are linked to a specific plan configuration, taking branch divergency into account. If the argument is a master plan or a lightweight branch, deployments linked to the master plan and lightweight branches are returned. If the argument is a divergent branch, only deployments linked to that particular branch will be returned.
        Parameters:
        masterOrBranchPlanKey - identifies master plan or branch
        Returns:
        a list of all deployment projects linked to a specified plan or any of its branches
        Since:
        7.0.5
      • getDeploymentProjectsWithStatusesRelatedToPlan

        @NotNull
        @NotNull List<DeploymentProjectWithEnvironmentStatuses> getDeploymentProjectsWithStatusesRelatedToPlan​(@NotNull
                                                                                                               @NotNull PlanKey planKey)
        Retrieve the deployment projects that are linked to a specific plan. Includes projects their environments + latest status
        Parameters:
        planKey - of the linked plan
        Returns:
        a list of all deployment projects linked to a specified plan
      • getDeploymentProjectsWithStatusesRelatedToPlanOrBranches

        @NotNull
        @NotNull List<DeploymentProjectWithEnvironmentStatuses> getDeploymentProjectsWithStatusesRelatedToPlanOrBranches​(@NotNull
                                                                                                                         @NotNull PlanKey masterOrBranchPlanKey)
        Retrieve the deployment projects that are linked to a specific plan or any of its branches. Includes projects their environments + latest status
        Parameters:
        masterOrBranchPlanKey - identifies master plan or branch
        Returns:
        a list of all deployment projects linked to a specified plan or any of its branches
      • getDeploymentProjectsWithStatusesRelatedToPlanResult

        @NotNull
        @NotNull List<DeploymentProjectStatusForResultSummary> getDeploymentProjectsWithStatusesRelatedToPlanResult​(@NotNull
                                                                                                                    @NotNull ResultsSummary resultsSummary)
        Retrieve the deployment projects that are linked to a specific result. Includes projects their environments + latest status
        Parameters:
        resultsSummary - of the linked plan
        Returns:
        a list of all deployment projects linked to a specified plan
      • getDeploymentProjectsRelatedToArtifact

        @NotNull
        @NotNull List<DeploymentProject> getDeploymentProjectsRelatedToArtifact​(@NotNull
                                                                                @NotNull ArtifactDefinition artifactDefinition)
        Retrieve the deployment projects that refer to the artifactDefinition within their items
        Parameters:
        artifactDefinition - related artifact definition
        Returns:
        a list of all deployment projects referring specified artifactDefinition
      • getDeploymentProject

        @Nullable
        @Nullable DeploymentProject getDeploymentProject​(long id)
                                                  throws org.acegisecurity.AccessDeniedException
        Parameters:
        id - of the deployment project to retrieve
        Returns:
        deployment project with the given id or null if none found.
        Throws:
        org.acegisecurity.AccessDeniedException
      • getDeploymentProjectForEnvironment

        @Nullable
        @Nullable DeploymentProject getDeploymentProjectForEnvironment​(long environmentID)
        Retrieve the deployment project that a specific environment belongs to.
        Parameters:
        environmentID - of the environment
        Returns:
        DeploymentProject environment belongs to
      • getDeploymentProjectForVersion

        @Nullable
        @Nullable DeploymentProject getDeploymentProjectForVersion​(long versionId)
        Retrieve the deployment project that a specific version belongs to.
        Parameters:
        versionId - of the version
        Returns:
        DeploymentProject version belongs to
      • validateAddDeploymentProject

        @NotNull
        @NotNull ErrorCollection validateAddDeploymentProject​(String name,
                                                              String description,
                                                              String planKeyString)
        Validates data to be used when adding a deployment project. This method is used by automated deployment project creation where validation of master plan is not required.
        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        planKeyString - key of the linked plan or its branch
        Returns:
        ErrorCollection containing any errors which may exist. If no errors found and empty ErrorCollection will be returned;
      • validateAddDeploymentProject

        @NotNull
        @NotNull ErrorCollection validateAddDeploymentProject​(String name,
                                                              String description,
                                                              String masterPlanKeyString,
                                                              String planKeyString)
        Validates data to be used when adding a deployment project. This method is used by UI where validation of master plan is required.
        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        masterPlanKeyString - key of the master of linked plan/branch
        planKeyString - key of the linked plan or its branch
        Returns:
        ErrorCollection containing any errors which may exist. If no errors found and empty ErrorCollection will be returned;
      • addDeploymentProject

        @NotNull
        default @NotNull DeploymentProject addDeploymentProject​(String name,
                                                                String description,
                                                                String planKeyString)
                                                         throws WebValidationException
        Create a new deployment project.

        Allows all Bamboo users to access the newly created deployment project. To create a deployment project with restricted initial access, use addDeploymentProject(String, String, String, boolean) instead.

        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        planKeyString - key of the linked plan or its branch
        Returns:
        the created deployment project.
        Throws:
        WebValidationException
      • addDeploymentProject

        @NotNull
        @NotNull DeploymentProject addDeploymentProject​(String name,
                                                        String description,
                                                        String planKeyString,
                                                        boolean accessForAllUsers)
                                                 throws WebValidationException
        Create a new deployment project.
        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        planKeyString - key of the linked plan or its branch
        accessForAllUsers - whether all Bamboo users will be allowed to view the deployment project
        Returns:
        the created deployment project.
        Throws:
        WebValidationException
      • validateCloneDeploymentProject

        @NotNull
        @NotNull ErrorCollection validateCloneDeploymentProject​(String name,
                                                                String description,
                                                                String planKeyString)
        Validates data to be used when adding a deployment project. This method is used by UI where validation of master plan is required.
        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        Returns:
        ErrorCollection containing any errors which may exist. If no errors found and empty ErrorCollection will be returned;
      • cloneDeploymentProject

        @NotNull
        @NotNull DeploymentProject cloneDeploymentProject​(long id,
                                                          String name,
                                                          String description,
                                                          String planKeyString)
                                                   throws WebValidationException
        Create a new deployment project.
        Parameters:
        name - shortish display name of the project
        description - optional description of what the project is about
        Returns:
        the created deployment project.
        Throws:
        WebValidationException
      • validateEditDeploymentProject

        @NotNull
        @NotNull ErrorCollection validateEditDeploymentProject​(long id,
                                                               String name,
                                                               @Nullable
                                                               @Nullable String description,
                                                               @Nullable
                                                               @Nullable String planKeyString)
        Validates data to be used when editing an existing deployment. This method is used by automated deployment project edit where validation of master plan is not required.
        Parameters:
        id -
        name -
        description -
        planKeyString -
        Returns:
        ErrorCollection containing any errors which may exist. If no errors found and empty ErrorCollection will be returned;
      • validateEditDeploymentProject

        @NotNull
        @NotNull ErrorCollection validateEditDeploymentProject​(long id,
                                                               String name,
                                                               String description,
                                                               String masterPlanKeyString,
                                                               String planKeyString)
        Validates data to be used when editing an existing deployment. This method is used by UI where validation of master plan is required.
        Parameters:
        id -
        name -
        description -
        masterPlanKeyString -
        planKeyString -
        Returns:
        ErrorCollection containing any errors which may exist. If no errors found and empty ErrorCollection will be returned;
      • validateArtifactTaskDefinitionOnPlanChange

        @NotNull
        @NotNull ErrorCollection validateArtifactTaskDefinitionOnPlanChange​(long deploymentProjectId,
                                                                            String planKeyString,
                                                                            @NotNull
                                                                            @NotNull Map<String,​ArtifactValidationError> artifactValidationErrors)
        Validates artifact definitions on plan change and warn if artifact differ, so deployment tasks using it may fail
        Parameters:
        deploymentProjectId -
        planKeyString -
        Returns:
      • validateTriggerConfigurationOnPlanChange

        @NotNull
        @NotNull ErrorCollection validateTriggerConfigurationOnPlanChange​(long deploymentProjectId,
                                                                          @NotNull
                                                                          @NotNull PlanKey newPlanKey,
                                                                          @NotNull
                                                                          @NotNull List<EnvironmentTriggerValidationError> triggerValidationErrors)
        Validate trigger configuration on deployment project's plan change
        Parameters:
        deploymentProjectId - identifies deployment project
        newPlanKey - new plan key
        triggerValidationErrors - list to store trigger validation errors
        Returns:
      • editDeploymentProject

        @NotNull
        @NotNull DeploymentProject editDeploymentProject​(long deploymentProjectId,
                                                         String name,
                                                         @Nullable
                                                         @Nullable String description,
                                                         String planKeyString)
                                                  throws WebValidationException
        Edit the details of the deployment project
        Parameters:
        deploymentProjectId - of the deployment project to edit
        name - the new name for the project
        description - the new description of the project
        planKeyString - optional of the linked plan
        Returns:
        The updated deployment project
        Throws:
        WebValidationException
      • getDeploymentProjectItems

        @NotNull
        @NotNull List<DeploymentProjectItem> getDeploymentProjectItems​(long deploymentProjectId)
        Does not validate deployment project exists
        Parameters:
        deploymentProjectId - if of the deployment project
        Returns:
        all project items for the specified deployment project. Empty list if deployment project not found.
      • getProjectItem

        @Nullable
        @Nullable DeploymentProjectItem getProjectItem​(long projectItemId)
        Get a specific Project Item.
        Parameters:
        projectItemId - of the project item to retrieve.
        Returns:
        project item with the given idea. Null if none found.
      • addArtifactProjectItem

        void addArtifactProjectItem​(long deploymentProjectId,
                                    @NotNull
                                    @NotNull ArtifactDefinition artifactDefinition)
        Add artifact project item to deployment project. If artifact is already referenced by one of the project items this method will do nothing. There's no check if artifact is "shared".
        Parameters:
        deploymentProjectId - id of the deployment project
        artifactDefinition - ArtifactDefinition
        Throws:
        IllegalArgumentException - when DeploymentProject doesn't exist
      • removeArtifactProjectItem

        void removeArtifactProjectItem​(long deploymentProjectId,
                                       @NotNull
                                       @NotNull ArtifactDefinition artifactDefinition)
        Remove artifact project item from deployment project. If artifact is not referenced by any of the project items this method will do nothing.
        Parameters:
        deploymentProjectId - id of the deployment project
        artifactDefinition - ArtifactDefinition
      • removeProjectItem

        void removeProjectItem​(long deploymentProjectId,
                               long projectItemId)
        Remove item from deployment project
        Parameters:
        deploymentProjectId - DeploymentProject id
        projectItemId -
      • getVersionNamingScheme

        @Nullable
        @Nullable VersionNamingScheme getVersionNamingScheme​(long deploymentProjectId)
        Get the version naming configuration for a project
        Parameters:
        deploymentProjectId - of the project
        Returns:
        version naming scheme for a project
      • getIncrementedVersionName

        @NotNull
        @NotNull String getIncrementedVersionName​(@NotNull
                                                  @NotNull String versionName)
        Calculates an incremented version name for a project. See VersionNamingService.getIncrementedVersionName for details.
        Parameters:
        versionName - to increment
        Returns:
        incremented version name.
      • userHasPermissionsToChangeAutoIncrementedVariables

        boolean userHasPermissionsToChangeAutoIncrementedVariables​(long deploymentProjectId,
                                                                   @NotNull
                                                                   @NotNull Set<String> variablesToAutoIncrement)
        Check if current user has necessary permissions to modify auto incremented variables settings.
        Parameters:
        deploymentProjectId -
        variablesToAutoIncrement -
        Since:
        6.1
      • validateVersionNamingScheme

        @NotNull
        @NotNull ErrorCollection validateVersionNamingScheme​(long deploymentProjectId,
                                                             String nextVersionName,
                                                             boolean autoIncrement,
                                                             @NotNull
                                                             @NotNull Set<String> variablesToAutoIncrement)
        Validate the version naming configuration for a project
        Parameters:
        deploymentProjectId - of the project
        nextVersionName - the value to be used for the next version name
        autoIncrement - whether the version name should be auto-incremented
        variablesToAutoIncrement - variables to increment
        Returns:
        error collection with any validation errors, if no errors, empty error collection is returned
      • updateVersionNamingScheme

        @NotNull
        @NotNull VersionNamingScheme updateVersionNamingScheme​(long deploymentProjectId,
                                                               String nextVersionName,
                                                               boolean autoIncrement,
                                                               boolean applicableToBranches,
                                                               @NotNull
                                                               @NotNull Set<String> variablesToAutoIncrement)
                                                        throws WebValidationException
        update the version naming configuration for a project
        Parameters:
        deploymentProjectId - of the project
        nextVersionName - the value to be used for the next version name
        autoIncrement - whether the version name should be auto-incremented
        applicableToBranches - whether the same scheme should be used with branches
        variablesToAutoIncrement - variables to increment
        Returns:
        the updated version naming scheme.
        Throws:
        WebValidationException - if any validation errors occur
      • unlinkDeploymentProjectsRelatedToPlan

        void unlinkDeploymentProjectsRelatedToPlan​(@NotNull
                                                   @NotNull PlanKey planKey)
        Remove all references to a Plan from all related deployment projects.
        Parameters:
        planKey -
      • getDeploymentProjectsReferencingArtifact

        List<DeploymentProject> getDeploymentProjectsReferencingArtifact​(@NotNull
                                                                         @NotNull Artifact artifact)
        Get all deployment projects that contain a version that uses specified artifact
        Parameters:
        artifact -
        Returns:
      • updatePlanKey

        void updatePlanKey​(@NotNull
                           @NotNull PlanKey originalPlanKey,
                           @NotNull
                           @NotNull PlanKey newPlanKey)
        Update planKey in DeploymentProject when plan key has changed (ie after moving plan).
        Parameters:
        originalPlanKey - original PlanKey
        newPlanKey - new PlanKey
      • resetTriggers

        void resetTriggers​(@NotNull
                           @NotNull PlanKey planKey)
        Delete and recreate the triggers for every deployment that's related to this planKey.
        Parameters:
        planKey -
      • getDeploymentProjectCount

        int getDeploymentProjectCount()
        Returns:
        count of all deployment projects
      • findSpecsStateIdsReferencedByDeployments

        @NotNull
        @NotNull Set<Long> findSpecsStateIdsReferencedByDeployments()