org.rhq.enterprise.server.resource
Interface ResourceManagerLocal

All Known Implementing Classes:
ResourceManagerBean

public interface ResourceManagerLocal

A manager that provides methods for creating, reading, updating, and deleting Resources.

Author:
Greg Hinkle, Ian Springer

Method Summary
 void addResourceError(ResourceError resourceError)
          Indicates an error occurred on a resource.
 boolean bulkNamedQueryDeleteInNewTransaction(Subject subject, java.lang.String namedQuery, java.util.List<java.lang.Integer> resourceIds)
           
 boolean bulkNativeQueryDeleteInNewTransaction(Subject subject, java.lang.String nativeQueryString, java.util.List<java.lang.Integer> resourceIds)
           
 void clearResourceConfigError(int resourceId)
          Clears errors of type ResourceErrorType.INVALID_PLUGIN_CONFIGURATION
 void createResource(Subject user, Resource resource, int parentId)
          Create a new Resource.
 java.util.List<java.lang.Integer> deleteResource(Subject user, int resourceId)
          This will delete the resource with the given ID along with all of its child resources.
 void deleteResourceError(Subject user, int resourceErrorId)
          Deletes the given resource error, effectively removing it from its resource's list of errors.
 java.util.List<java.lang.Integer> deleteResources(Subject user, int[] resourceIds)
          This will delete the resources with the given ID along with all of their child resources.
 void deleteSingleResourceInNewTransaction(Subject user, int resourceId)
          Deletes the given resource (but not its children) in a new transaction.
 PageList<Resource> findAvailableResourcesForDashboardPortlet(Subject user, java.lang.Integer typeId, ResourceCategory category, int[] excludeIds, PageControl pageControl)
           
 PageList<Resource> findAvailableResourcesForRepo(Subject user, int repoId, java.lang.String search, ResourceCategory category, PageControl pageControl)
           
 PageList<Resource> findAvailableResourcesForResourceGroup(Subject user, int groupId, ResourceType type, ResourceCategory category, java.lang.String nameFilter, int[] excludeIds, PageControl pageControl)
           
 java.util.List<AutoGroupComposite> findChildrenAutoGroups(Subject user, int parentResourceId)
           
 java.util.List<AutoGroupComposite> findChildrenAutoGroups(Subject user, int parentResourceId, int[] resourceTypeIds)
           
 java.util.List<java.lang.Integer> findChildrenResourceIds(int parentResourceId, InventoryStatus status)
           
 PageList<Resource> findChildResources(Subject subject, int resourceId, PageControl pageControl)
           
 PageList<Resource> findChildResourcesByCategoryAndInventoryStatus(Subject user, Resource parent, ResourceCategory category, InventoryStatus status, PageControl pageControl)
           
 java.util.List<java.lang.Integer> findExplicitResourceIdsByResourceGroup(int resourceGroupId)
           
 PageList<Resource> findExplicitResourcesByResourceGroup(Subject subject, ResourceGroup group, PageControl pageControl)
           
 PageList<ResourceWithAvailability> findExplicitResourceWithAvailabilityByResourceGroup(Subject subject, ResourceGroup group, PageControl pageControl)
           
 java.util.List<ResourceIdFlyWeight> findFlyWeights(int[] resourceIds)
           
 java.util.List<java.lang.Integer> findImplicitResourceIdsByResourceGroup(int resourceGroupId)
           
 PageList<Resource> findImplicitResourcesByResourceGroup(Subject user, ResourceGroup group, PageControl pageControl)
           
 PageList<ResourceWithAvailability> findImplicitResourceWithAvailabilityByResourceGroup(Subject subject, ResourceGroup group, PageControl pageControl)
           
 java.util.List<RecentlyAddedResourceComposite> findRecentlyAddedPlatforms(Subject user, long ctime, int maxItems)
          Gets a list of platforms that were recently added (committed) to inventory.
 java.util.List<RecentlyAddedResourceComposite> findRecentlyAddedServers(Subject user, long ctime, int platformId)
          Gets a list of servers that are children of the given platform that were recently added (committed) to inventory.
 PageList<Resource> findResourceByIds(Subject subject, int[] resourceIds, boolean attachParentResource, PageControl pageControl)
           
 PageList<Resource> findResourceByParentAndInventoryStatus(Subject user, Resource parent, InventoryStatus status, PageControl pageControl)
           
 PageList<ResourceComposite> findResourceCompositeForParentAndTypeAndCategory(Subject user, ResourceCategory category, int resourceTypeId, Resource parentResource, PageControl pageControl)
          Get a Resource Composite for Resources limited by the given parameters
 PageList<ResourceComposite> findResourceComposites(Subject user, ResourceCategory category, java.lang.String typeName, int parentResourceId, java.lang.String searchString, PageControl pageControl)
           
 PageList<ResourceComposite> findResourceComposites(Subject user, ResourceCategory category, java.lang.String typeName, java.lang.String pluginName, Resource parentResource, java.lang.String searchString, boolean attachParentResource, PageControl pageControl)
           
 java.util.List<ResourceError> findResourceErrors(Subject user, int resourceId, ResourceErrorType errorType)
          Returns the errors of the given type that have occurred for the given resource.
 PageList<ResourceHealthComposite> findResourceHealth(Subject user, int[] resourceIds, PageControl pc)
          Gets the "health" of a set of resources, where the health composite gives you the resource's availability status and the number of alerts it has emitted.
 java.util.List<ResourceInstallCount> findResourceInstallCounts(Subject subject, boolean groupByVersions)
           
 java.util.List<Resource> findResourceLineage(Subject subject, int resourceId)
          #see {@link ResourceManagerRemote#findResourceLineage(Subject, int)
 java.util.List<AutoGroupComposite> findResourcesAutoGroups(Subject subject, int[] resourceIds)
           
 java.util.List<Resource> findResourcesByAgent(Subject user, int agentId, PageControl pageControl)
          Load the entire list of resources under an agent.
 PageList<Resource> findResourcesByCategory(Subject user, ResourceCategory category, InventoryStatus inventoryStatus, PageControl pageControl)
           
 java.util.List<Resource> findResourcesByCompatibleGroup(Subject user, int compatibleGroupId, PageControl pageControl)
           
 PageList<Resource> findResourcesByCriteria(Subject subject, ResourceCriteria criteria)
           
 java.util.List<ResourceWithAvailability> findResourcesByParentAndType(Subject user, Resource parent, ResourceType type)
           
 java.util.List<java.lang.Integer> findResourcesMarkedForAsyncDeletion(Subject user)
           
 ResourceAvailabilitySummary getAvailabilitySummary(Subject user, int resourceId)
           
 ResourceAvailability getLiveResourceAvailability(Subject subject, int resourceId)
          #see {@link ResourceManagerRemote#getLiveResourceAvailability(Subject, int)
 Resource getParentResource(int resourceId)
          Returns the parent of the Resource with the specified id, or null if the Resource does not have a parent (i.e.
 Resource getParentResource(Subject subject, int resourceId)
           
 Resource getPlatform(Agent agent)
          Returns the platform Resource associated with the specified Agent.
 Resource getResource(Subject subject, int resourceId)
          #see {@link ResourceManagerRemote#getResource(Subject, int)
 AutoGroupComposite getResourceAutoGroup(Subject user, int resourceId)
           
 Resource getResourceById(Subject user, int resourceId)
           
 Resource getResourceByParentAndKey(Subject user, Resource parent, java.lang.String key, java.lang.String plugin, java.lang.String typeName)
           
 int getResourceCountByCategory(Subject user, ResourceCategory category, InventoryStatus status)
           
 int getResourceCountByTypeAndIds(Subject user, ResourceType type, int[] resourceIds)
           
 java.util.List<java.lang.Integer> getResourceIdLineage(int resourceId)
           
 java.util.List<Resource> getResourceLineage(int resourceId)
          Returns the lineage of the Resource with the specified id.
 java.util.Map<java.lang.Integer,InventoryStatus> getResourceStatuses(int rootResourceId, boolean descendants)
           
 Resource getResourceTree(int rootResourceId, boolean recursive)
           
 Resource getRootResourceForResource(int resourceId)
          Looks up the root of a subtree in the inventory.
 Resource setResourceStatus(Subject user, Resource resource, InventoryStatus newStatus, boolean setDescendants)
          Changes the inventory status of the specified resource and optionally its descendants to the provided inventory status if the user is authorized to do so.
 void uninventoryResources(Subject subject, int[] resourceIds)
          #see {@link ResourceManagerRemote#uninventoryResources(Subject, int)
 Resource updateResource(Subject user, Resource resource)
          Update an existing Resource.
 

Method Detail

createResource

void createResource(Subject user,
                    Resource resource,
                    int parentId)
                    throws ResourceAlreadyExistsException
Create a new Resource.

Parameters:
user - the user creating the resource
resource - the resource to be created
parentId - set to -1 to imply that this is a root resource, which has no parent
Throws:
ResourceAlreadyExistsException - if an equivalent resource already exists

updateResource

Resource updateResource(Subject user,
                        Resource resource)
Update an existing Resource.

Parameters:
user - the user updating the resource
resource - the resource to be updated
Returns:
the updated (attached) resource

deleteResources

java.util.List<java.lang.Integer> deleteResources(Subject user,
                                                  int[] resourceIds)
This will delete the resources with the given ID along with all of their child resources. This method will not create its own transaction; each individual child resource as well as the top level resources identified with the given IDs will be deleted in their own transaction. This will ensure that resources are deleting in the proper order (for example, if a given resource is actually a child of one of the other given resources, this method ensures the deletion occurs properly).

Parameters:
user - the user deleting the resource
resourceIds - the ID of the resource to be deleted
Returns:
the list of all resources that were deleted - in effect, this will contain resourceIds and their childrens' IDs

deleteResource

java.util.List<java.lang.Integer> deleteResource(Subject user,
                                                 int resourceId)
This will delete the resource with the given ID along with all of its child resources. This method will not create its own transaction; each individual child resource as well as the top level resource identified with the given ID will be deleted in its own transaction.

Parameters:
user - the user deleting the resource
resourceId - the ID of the resource to be deleted
Returns:
the list of all resources that were deleted - in effect, this will contain resourceId and its children's IDs

deleteSingleResourceInNewTransaction

void deleteSingleResourceInNewTransaction(Subject user,
                                          int resourceId)
Deletes the given resource (but not its children) in a new transaction. This is normally used only within this manager bean itself. Clients normally should call deleteResource(Subject, int). If you call this method, make sure you have a specific reason for it; check to see if calling deleteResource(Subject, int) would not be more appropriate.

Parameters:
user - the user deleting the resource
resource - the resource to be deleted

bulkNativeQueryDeleteInNewTransaction

boolean bulkNativeQueryDeleteInNewTransaction(Subject subject,
                                              java.lang.String nativeQueryString,
                                              java.util.List<java.lang.Integer> resourceIds)

bulkNamedQueryDeleteInNewTransaction

boolean bulkNamedQueryDeleteInNewTransaction(Subject subject,
                                             java.lang.String namedQuery,
                                             java.util.List<java.lang.Integer> resourceIds)

setResourceStatus

Resource setResourceStatus(Subject user,
                           Resource resource,
                           InventoryStatus newStatus,
                           boolean setDescendants)
Changes the inventory status of the specified resource and optionally its descendants to the provided inventory status if the user is authorized to do so.

Parameters:
user - user doing the resource status changing
resource - the Resource to change
newStatus - the new status to change it to
setDescendants - if true, all descendent resources will also have their status set
Returns:
an updated copy of the resource

getResourceById

@NotNull
Resource getResourceById(Subject user,
                                 int resourceId)

getParentResource

@Nullable
Resource getParentResource(int resourceId)
Returns the parent of the Resource with the specified id, or null if the Resource does not have a parent (i.e. is a platform).

Parameters:
resourceId - the id of a Resource in inventory
Returns:
the parent of the Resource with the specified id, or null if the Resource does not have a parent

getResourceIdLineage

java.util.List<java.lang.Integer> getResourceIdLineage(int resourceId)

getResourceLineage

@NotNull
java.util.List<Resource> getResourceLineage(int resourceId)
Returns the lineage of the Resource with the specified id. The lineage is represented as a List of Resources, with the first item being the root of the Resource's ancestry (or the Resource itself if it is a root Resource (i.e. a platform)) and the last item being the Resource itself. Since the lineage includes the Resource itself, the returned List will always contain at least one item.

Parameters:
resourceId - the id of a Resource in inventory
Returns:
the lineage of the Resource with the specified id

getRootResourceForResource

@NotNull
Resource getRootResourceForResource(int resourceId)
Looks up the root of a subtree in the inventory. This will generally find the platform on which a resource is running.

Parameters:
resourceId - the resource to find the root parent of
Returns:
the root of the supplied resource's tree

getResourceByParentAndKey

@Nullable
Resource getResourceByParentAndKey(Subject user,
                                            @Nullable
                                            Resource parent,
                                            java.lang.String key,
                                            java.lang.String plugin,
                                            java.lang.String typeName)
Parameters:
user -
parent -
key -
Returns:
the resource, or null if no such resource exists

findResourceByParentAndInventoryStatus

PageList<Resource> findResourceByParentAndInventoryStatus(Subject user,
                                                          Resource parent,
                                                          InventoryStatus status,
                                                          PageControl pageControl)

findResourcesByParentAndType

java.util.List<ResourceWithAvailability> findResourcesByParentAndType(Subject user,
                                                                      Resource parent,
                                                                      ResourceType type)

findChildrenResourceIds

java.util.List<java.lang.Integer> findChildrenResourceIds(int parentResourceId,
                                                          InventoryStatus status)

findChildResourcesByCategoryAndInventoryStatus

PageList<Resource> findChildResourcesByCategoryAndInventoryStatus(Subject user,
                                                                  Resource parent,
                                                                  ResourceCategory category,
                                                                  InventoryStatus status,
                                                                  PageControl pageControl)

findResourcesByCategory

PageList<Resource> findResourcesByCategory(Subject user,
                                           ResourceCategory category,
                                           InventoryStatus inventoryStatus,
                                           PageControl pageControl)
See Also:
ResourceManagerRemote#findResourcesByCategory(Subject, ResourceCategory, InventoryStatus, PageControl)

findResourceComposites

PageList<ResourceComposite> findResourceComposites(Subject user,
                                                   ResourceCategory category,
                                                   java.lang.String typeName,
                                                   int parentResourceId,
                                                   java.lang.String searchString,
                                                   PageControl pageControl)

findResourceComposites

PageList<ResourceComposite> findResourceComposites(Subject user,
                                                   ResourceCategory category,
                                                   java.lang.String typeName,
                                                   java.lang.String pluginName,
                                                   Resource parentResource,
                                                   java.lang.String searchString,
                                                   boolean attachParentResource,
                                                   PageControl pageControl)
See Also:
ResourceManagerRemote.findResourceComposites(Subject, ResourceCategory, String, int, String, PageControl)

getResourceCountByCategory

int getResourceCountByCategory(Subject user,
                               ResourceCategory category,
                               InventoryStatus status)

getResourceCountByTypeAndIds

int getResourceCountByTypeAndIds(Subject user,
                                 ResourceType type,
                                 int[] resourceIds)

findResourcesMarkedForAsyncDeletion

java.util.List<java.lang.Integer> findResourcesMarkedForAsyncDeletion(Subject user)

findRecentlyAddedPlatforms

java.util.List<RecentlyAddedResourceComposite> findRecentlyAddedPlatforms(Subject user,
                                                                          long ctime,
                                                                          int maxItems)
Gets a list of platforms that were recently added (committed) to inventory.

Parameters:
user -
ctime - the oldest time (epoch mills) that a platform had to have been added for it to be returned
maxItems - the maximum number of items to return within the timeframe
Returns:
list of all platforms that were added since or at ctime

findRecentlyAddedServers

java.util.List<RecentlyAddedResourceComposite> findRecentlyAddedServers(Subject user,
                                                                        long ctime,
                                                                        int platformId)
Gets a list of servers that are children of the given platform that were recently added (committed) to inventory.

Parameters:
user -
ctime - the oldest time (epoch mills) that a server had to have been added for it to be returned
Returns:
list of all servers (that are children of the given platforms) that were added since or at ctime

findExplicitResourceIdsByResourceGroup

java.util.List<java.lang.Integer> findExplicitResourceIdsByResourceGroup(int resourceGroupId)

findImplicitResourceIdsByResourceGroup

java.util.List<java.lang.Integer> findImplicitResourceIdsByResourceGroup(int resourceGroupId)

findFlyWeights

java.util.List<ResourceIdFlyWeight> findFlyWeights(int[] resourceIds)

findExplicitResourcesByResourceGroup

PageList<Resource> findExplicitResourcesByResourceGroup(Subject subject,
                                                        ResourceGroup group,
                                                        PageControl pageControl)
Throws:
ResourceGroupNotFoundException - if the specified ResourceGroup does not exist

findImplicitResourcesByResourceGroup

PageList<Resource> findImplicitResourcesByResourceGroup(Subject user,
                                                        ResourceGroup group,
                                                        PageControl pageControl)
Throws:
ResourceGroupNotFoundException - if the specified ResourceGroup does not exist

findExplicitResourceWithAvailabilityByResourceGroup

PageList<ResourceWithAvailability> findExplicitResourceWithAvailabilityByResourceGroup(Subject subject,
                                                                                       ResourceGroup group,
                                                                                       PageControl pageControl)
Throws:
ResourceGroupNotFoundException - if the specified ResourceGroup does not exist

findImplicitResourceWithAvailabilityByResourceGroup

PageList<ResourceWithAvailability> findImplicitResourceWithAvailabilityByResourceGroup(Subject subject,
                                                                                       ResourceGroup group,
                                                                                       PageControl pageControl)
Throws:
ResourceGroupNotFoundException - if the specified ResourceGroup does not exist

findAvailableResourcesForResourceGroup

PageList<Resource> findAvailableResourcesForResourceGroup(Subject user,
                                                          int groupId,
                                                          ResourceType type,
                                                          ResourceCategory category,
                                                          java.lang.String nameFilter,
                                                          int[] excludeIds,
                                                          PageControl pageControl)
Throws:
ResourceGroupNotFoundException - if no ResourceGroup exists with the specified id

findAvailableResourcesForRepo

PageList<Resource> findAvailableResourcesForRepo(Subject user,
                                                 int repoId,
                                                 java.lang.String search,
                                                 ResourceCategory category,
                                                 PageControl pageControl)

findAvailableResourcesForDashboardPortlet

PageList<Resource> findAvailableResourcesForDashboardPortlet(Subject user,
                                                             java.lang.Integer typeId,
                                                             ResourceCategory category,
                                                             int[] excludeIds,
                                                             PageControl pageControl)

findResourceByIds

PageList<Resource> findResourceByIds(Subject subject,
                                     int[] resourceIds,
                                     boolean attachParentResource,
                                     PageControl pageControl)

getResourceTree

Resource getResourceTree(int rootResourceId,
                         boolean recursive)
See Also:
ResourceManagerRemote#getResourceTree(int)

findResourceCompositeForParentAndTypeAndCategory

PageList<ResourceComposite> findResourceCompositeForParentAndTypeAndCategory(Subject user,
                                                                             ResourceCategory category,
                                                                             int resourceTypeId,
                                                                             Resource parentResource,
                                                                             PageControl pageControl)
Get a Resource Composite for Resources limited by the given parameters

Parameters:
user - User executing the query
category - Category this query should be limited to
resourceTypeId - the PK of the desired resource type or -1 if no limit
parentResource - the desired parent resource or null if no limit
pageControl -
Returns:

findResourceErrors

@NotNull
java.util.List<ResourceError> findResourceErrors(Subject user,
                                                         int resourceId,
                                                         ResourceErrorType errorType)
Returns the errors of the given type that have occurred for the given resource.

Parameters:
user - the user asking to see the errors
resourceId - the resource whose errors are to be returned
errorType - the type of errors to return
Returns:
the list of resource errors

addResourceError

void addResourceError(ResourceError resourceError)
Indicates an error occurred on a resource. The given error will be associated with the resource found in the error.

Parameters:
resourceError - encapsulates all information about the error

deleteResourceError

void deleteResourceError(Subject user,
                         int resourceErrorId)
Deletes the given resource error, effectively removing it from its resource's list of errors.

Parameters:
user - the user deleting the resource error
resourceErrorId - identifies the resource error to delete

findChildrenAutoGroups

java.util.List<AutoGroupComposite> findChildrenAutoGroups(Subject user,
                                                          int parentResourceId)

findChildrenAutoGroups

@NotNull
java.util.List<AutoGroupComposite> findChildrenAutoGroups(Subject user,
                                                                  int parentResourceId,
                                                                  int[] resourceTypeIds)

getResourceAutoGroup

AutoGroupComposite getResourceAutoGroup(Subject user,
                                        int resourceId)

getResourceStatuses

java.util.Map<java.lang.Integer,InventoryStatus> getResourceStatuses(int rootResourceId,
                                                                     boolean descendants)

findResourceHealth

PageList<ResourceHealthComposite> findResourceHealth(Subject user,
                                                     int[] resourceIds,
                                                     PageControl pc)
Gets the "health" of a set of resources, where the health composite gives you the resource's availability status and the number of alerts it has emitted. Note that even though this takes a subject - it is assumed the caller is authorized to see the given resources and no authz checks will be made. This method takes a subject in case, in the future, we decide this implementation needs to perform authz checks.

This method is here to support the favorites portlet in the dashboard, where the favorites are stored as user preferences - and they can't make it into the preferences unless the user had access to see those resources in the first place, hence, no additional authorizations need to be made here.

Parameters:
user -
resourceIds -
pc -
Returns:
the health information on the resources

findResourcesAutoGroups

java.util.List<AutoGroupComposite> findResourcesAutoGroups(Subject subject,
                                                           int[] resourceIds)

clearResourceConfigError

void clearResourceConfigError(int resourceId)
Clears errors of type ResourceErrorType.INVALID_PLUGIN_CONFIGURATION

Parameters:
resourceId - id of the resource

getPlatform

Resource getPlatform(Agent agent)
Returns the platform Resource associated with the specified Agent.

Parameters:
agent - an Agent
Returns:
the platform Resource associated with the specified Agent

findResourcesByAgent

java.util.List<Resource> findResourcesByAgent(Subject user,
                                              int agentId,
                                              PageControl pageControl)
Load the entire list of resources under an agent. Tries to do so in as few queries as possible while prefectching the information necessary to create a tree view of the platform inventory. This includes resource type and subcategory information as well as current availability and structure. This method also returns placesholder LockedResourcerce objects for resources that a user should not have visibility to in order to keep the tree a directed graph.

Parameters:
user - user accessing the tree
agentId - the agent id of the platform to return inventory for
pageControl - the filter for the resources
Returns:
the list of all resources on a platform

findResourcesByCompatibleGroup

java.util.List<Resource> findResourcesByCompatibleGroup(Subject user,
                                                        int compatibleGroupId,
                                                        PageControl pageControl)

getAvailabilitySummary

ResourceAvailabilitySummary getAvailabilitySummary(Subject user,
                                                   int resourceId)

getLiveResourceAvailability

ResourceAvailability getLiveResourceAvailability(Subject subject,
                                                 int resourceId)
#see {@link ResourceManagerRemote#getLiveResourceAvailability(Subject, int)


getResource

Resource getResource(Subject subject,
                     int resourceId)
#see {@link ResourceManagerRemote#getResource(Subject, int)


findResourceLineage

java.util.List<Resource> findResourceLineage(Subject subject,
                                             int resourceId)
#see {@link ResourceManagerRemote#findResourceLineage(Subject, int)


uninventoryResources

void uninventoryResources(Subject subject,
                          int[] resourceIds)
#see {@link ResourceManagerRemote#uninventoryResources(Subject, int)


findResourceInstallCounts

java.util.List<ResourceInstallCount> findResourceInstallCounts(Subject subject,
                                                               boolean groupByVersions)

findResourcesByCriteria

PageList<Resource> findResourcesByCriteria(Subject subject,
                                           ResourceCriteria criteria)

findChildResources

PageList<Resource> findChildResources(Subject subject,
                                      int resourceId,
                                      PageControl pageControl)

getParentResource

Resource getParentResource(Subject subject,
                           int resourceId)


Copyright © 2008-2009 Red Hat, Inc.. All Rights Reserved.