Rerouting services using routing policies in a multiple resource node system

A method, system and computer program product for configuring active resource nodes in a distributed computing system controlled by an administrative control module. The method includes identifying a first configuration of active resource nodes having at least two or more active resource nodes and detecting a modification of a link representing at least one connection between the active resource nodes. In response to detecting the modification of the link, a routing policy table is retrieved and a second configuration of the active resource nodes are identified from the routing policy table including at least one new connection between the two or more active resource nodes. The distributed computing system is triggered to configure the two or more active resource nodes according to the second configuration and to establish the at least one new connection between the two or more active resource nodes.

BACKGROUND

1. Technical Field

The present invention generally relates to data processing systems. More specifically, the present invention relates to a system and method for rerouting active resource nodes using routing policies in a distributed computing system.

2. Description of the Related Art

Cloud and distributed computing systems use multiple service nodes to deliver services to end users through a communication network. Several different service nodes in the network may be able to provide different components of a service. There may be multiple nodes that are operable to provide the same components of the services. System administrators can change the service nodes used and the routing of connections between service nodes to control traffic to and from service nodes. Changes to service nodes and connections can be necessary in the event of a disaster affecting service nodes, performance degradation of a service node, the need to test service nodes, trouble shooting and load balancing. One problem in changing service nodes is to find a service path or route that meets client requirements.

BRIEF SUMMARY

Disclosed are a method, a system and a computer program product for configuring active resource nodes in a distributed computing system controlled by an administrative control module. The method includes identifying a first configuration of active resource nodes having at least two or more active resource nodes and detecting a modification of at least one link representing at least one connection between the active resource nodes. In response to detecting the modification of the link, the method includes retrieving a routing policy table and identifying a second configuration of the active resource nodes from the routing policy table that includes at least one new connection between the two or more active resource nodes. The distributed computing system is triggered to configure the two or more active resource nodes according to the second configuration and to establish the at least one new connection between the two or more active resource nodes.

The data processing system includes a distributed computing system including several resource nodes. An administrative control module is communicatively coupled to the distributed computing system. The administrative control module has at least one processor and at least one storage device having stored therein a re-routing software that causes the processor to: identify a first configuration of active resource nodes having at least two or more active resource nodes; and detect a modification of a link representing at least one connection between the active resource nodes. In response to detecting the modification of the link, the processor retrieves a routing policy table and identifies, from the routing policy table, a second configuration of the active resource nodes including at least one new connection between the two or more active resource nodes. The processor triggers the distributed computing system to (a) configure the two or more active resource nodes according to the second configuration and (b) establish the at least one new connection between the two or more active resource nodes.

The computer program product includes a computer readable storage device; and program code stored on the computer readable storage device that when executed by a processor of an administrative control computer having a network interface to a distributed computing system including several resource nodes causes the processor to: identify a first configuration of active resource nodes having at least two or more active resource nodes; and detect a modification of a link representing at least one connection between the active resource nodes. In response to detecting the modification of the link, the program codes causes the processor to retrieve a routing policy table and identify from the routing policy table a second configuration of the active resource nodes including at least one new connection between the two or more active resource nodes. The program code further causes the processor to trigger the distributed computing system to configure the two or more active resource nodes according to the second configuration and to establish the at least one new connection between the two or more active resource nodes.

DETAILED DESCRIPTION

The illustrative embodiments provide a method, system and computer program product for configuring active resource nodes in a distributed computing system controlled by an administrative control module. The method includes identifying a first configuration of active resource nodes having at least two or more active resource nodes and detecting a modification of a link representing at least one connection between the active resource nodes. In response to detecting the modification of the link, the method includes retrieving a routing policy table and identifying a second configuration of the active resource nodes from the routing policy table that includes at least one new connection between the two or more active resource nodes. The distributed computing system is triggered to configure the two or more active resource nodes according to the second configuration and to establish the at least one new connection between the two or more active resource nodes.

It is understood that the use of specific component, device and/or parameter names (such as those of the executing utility/logic described herein) are for example only and not meant to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology utilized to describe the components/devices/parameters herein, without limitation. Each term utilized herein is to be given its broadest interpretation given the context in which that term is utilized.

Those of ordinary skill in the art will appreciate that the hardware components and basic configurations depicted inFIGS. 1-2may vary. The illustrative components within distributed computing system (DCS)100and the other figures are not intended to be exhaustive, but rather are representative to highlight essential components that are utilized to implement the present invention. For example, other devices/components may be used in addition to or in place of the hardware depicted. The depicted example is not meant to imply architectural or other limitations with respect to the presently described embodiments and/or the general invention.

With reference now to the figures, and beginning withFIG. 1, there is depicted a block diagram representation of an example distributed data processing system, within which one or more embodiments can be implemented.

FIG. 1and the following discussion are intended to provide a brief, general description of an exemplary distributed computing system adapted to implement the described embodiments. While embodiments will be described in the general context of instructions residing on hardware within a server computer, those skilled in the art will recognize that some embodiments may be implemented in a combination of program modules running in an operating system. Generally, program modules include routines, programs, components, and data structures, which perform particular tasks or implement particular abstract data types. The described features of the disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

Example distributed computing system (DCS)100comprises a data processing system (DPS)105that is controlled by an administrative control module executing within administrative control computer (ACM)150. DPS105includes client 1 server node102and client 2 server node104that both access services through several resource nodes108which are interconnected by communication connections180via a communication network170. Client1server node102and client 2 server node104are in communication with network170through communication connections180. Each of the resource nodes108can be an independent computer system that can be selectively accessed through network170via communication connections180. The resource nodes108include destination server nodes110, service server nodes120and websphere application server (WAS) nodes140. Example destination server nodes110comprise destination application (DestApp) 1 node112, DestApp 2 node114and DestApp 3 node116. The destination application nodes112-116contain application computing services that can be selectively accessed by clients within DCS100such as client 1 server node102and client 2 server node104.

Service server nodes120contain servers that provide services. Service server nodes120include database server node2-1(DB2-1)122, DB2-2 node124and DB2-3 node126. Service server nodes120further include lightweight directory application protocol (LDAP) server LDAP-1 node132and LDAP-2 node134. LDAP nodes132and134are server nodes that provide application protocols for accessing and maintaining distributed directory information services for clients. Clients access services via LDAP servers. For example, client 1 server node102accesses DestApp-1 node112through LDAP-1 node132via communication connections182and184. Websphere application server (WAS) nodes140include WAS-1 server node142and WAS-2 sever node144. WAS server nodes142and144are used to connect website users to applications or servlets.

DCS100further comprises an administrative control module/computer (ACM)150that controls the operation of DCS100. ACM150is in communication with network170via a communication connection180. ACM150can transmit commands and instructions to DPS105and receive data and information from DPS105. In one embodiment, ACM150can configure the resource nodes108that are active based at least partially on a user input and can establish new connections180(and/or reconfigure the existing connections) between the active resource nodes.

FIG. 2illustrates an example ACM150that can be described as having features common to a server computer. However, as used herein, the term “administrative control module/computer” is intended to include any type of computing device or machine that is capable of receiving, storing and running a software product and retrieving data/instructions from a storage device. Therefore the ACM150can include not only computer systems, but also devices such as communication devices and personal and home consumer devices that have multiple processors and/or processor cores. ACM150is configured as a stand-alone computer. ACM150comprises one or more processor modules or chips202that include one or more central processing units (CPUs), of which CPU204is illustrated. Throughout the description herein, the terms CPU and processor can be utilized interchangeably as referring to the same component. Processor chip202further includes a cache subsystem208. Cache subsystem208can comprise one or more levels of caches, such as an L1 cache and an L2 cache, and one or more of the lower levels of caches can be a shared cache. Processor chip202is coupled to a system interconnect fabric214that couples other components of ACM150to processor chip202. Interconnect fabric214in an embodiment can be an address and data bus.

System memory220is coupled to system interconnect fabric214via a memory controller210. System memory220can include therein a plurality of modules and routines, including operating system (0/S)222, firmware (F/W)224, software (S/W)226, and data228. The various software and/or firmware modules have varying functionality when their corresponding program code is executed by CPU204within ACM150.

ACM150can further include physical computer readable storage media230(or storage) such as hard disk drives. Storage media230can also include solid state storage devices, optical drives and other storage devices. ACM150can also include input/output devices and corresponding controllers, generally represented as I/O240, and a network interface card (NIC)250, among other components. NIC250enables ACM150to connect to and communicate with other remote devices and networks, such as network170. I/O240can include a display controller242that is in communication with one or more display(s)244. Display controller242is a graphics or video controller that can control at least a portion of the content shown on display(s)244. I/O240can further include input devices260such as a keyboard262, mouse264and touch screen266that allow a user to make selections and provide input to ACM150. Keyboard262has a control key263. In one embodiment, keyboard262, mouse264and touch screen266can be used to perform select and move operations, which are visually shown on display244and referred to as drag-and-drop in some instances. In alternate instances, where menu lists can be provided with a right click of the pointer controller or other form of manual or other selection (e.g., voiced commands), the selection of a specific one or more links and move of the selected one or more links to another location within the graphical user interface (GUI) can be completed differently from the commonly known drag and drop operation. All such methods of link or node selection and manipulation or movement of links across nodes within the GUI fall within the scope of the disclosure.

FIG. 3illustrates example contents of system memory220. In the discussion ofFIG. 3, reference is also made to elements described inFIG. 2. Operating system (O/S)222, firmware (F/W)224, software (S/W)226and data228can be stored in and retrieved from system memory220through the operation of read and write commands. Functions, modules, routines, methods and processes of the present disclosure can be provided as firmware code and/or logic stored on system memory220and executed on processor module202. System memory220also includes rerouting software300, routing policy table310and policy restrictions and criteria320. Rerouting software300executing on processor102automatically configures connections180between resource nodes108after detecting a modification or redirection of a link representing at least one connection180between at least two of the active resource nodes. Routing policy table310is a pre-determined table that contains the specific configuration of connections180that can be established within DCS100to route services between the various resource nodes108. Policy restrictions and criteria320contain rules and criteria that govern how routing policy table310is applied and used by rerouting software300.

FIGS. 4A and 4Billustrate example resource node configurations400and450respectively, displayed in a graphical user interface (GUI)405that can be presented on display244. In the discussion ofFIGS. 4A and 4B, reference is also made to elements described inFIG. 1andFIG. 2.FIG. 4Acomprises resource node configuration400that includes a destination application selection menu410and a service map420. Destination application selection menu410contains several destination application nodes including DestApp 1 node112, DestApp 2 node114and DestApp 3 node116. The destination application nodes112-116contain computing services that can be selectively accessed by a system administrator or user. The system administrator can select one or more destination application nodes112-116from destination application selection menu410using an input device260. InFIG. 4A, DestApp 1 node112has been selected by the user and is indicated by dashed lines.

Service map420contains a graphical representation of the physical topology of the available resource nodes108and their connections180within DPS105. The resource nodes108shown on service map420include destination application nodes DestApp 1 node112, DestApp 2 node114and DestApp 3 node116and database server node DB2-1122, DB2-2 node124and DB2-3 node126. The resource nodes108shown on service map420further include lightweight directory application protocol (LDAP) nodes, LDAP-1 node132and LDAP-2 node134, and websphere application nodes, WAS-1 node142and WAS-2 node144. Several of the resource nodes108are current active resource nodes and are in communication with each other via network170. WAS-1 node142is active and communicatively connected to LDAP-1 node132via a communication connection X1422. WAS-1 node142is active and communicatively connected to DB2-1 node122via a communication connection Y1424. WAS-1 node142is active and communicatively connected to DestApp-1 node112via a communication connection Z1426.

A system administrator can modify a first configuration of active resource nodes, e.g., resource node configuration400, and connections between the active resource nodes by selecting and moving (e.g., via a drag and drop operation) a link428representing at least one connection between the active resource nodes (i.e. WAS-1 node142and LDAP-1 node132via connection X1422). The system administrator can drag and drop the link428using one of input devices260. As shown inFIG. 4A, the user has selected connection X1422and has dragged the link428to LDAP-2134as indicated by dashed lines.

In other embodiments, other forms of manual or other selection techniques (e.g., voice commands), the selection of link428and move of the selected link428to another location within GUI405can be completed differently from the commonly known drag and drop operation. All such methods of link or node selection and manipulation or movement of links across nodes108within GUI405fall within the scope of the disclosure.

After a modification of the link428has been detected, the rerouting software300executing on processor202automatically reroutes or configures the connections180between the active resource nodes108based upon the modification of the link428and the routing policy table310. Turning toFIG. 4B, when a modification of the link428has been detected, the rerouting software300executing on processor102retrieves routing policy table310and identifies from the routing policy table310a second configuration450of the active resource nodes including at least one new connection X2462between the two or more active resource nodes (i.e. WAS-1 node142and LDAP-2 node134). Processor202triggers the distributed computing system105to reroute or configure the active resource nodes according to the second configuration450and to establish the at least one new connection X2462between the active resource nodes WAS-1 node142and LDAP-2 node134. Service map460shows the graphical representation of the physical topology of the second configuration450including the new connection X2462.

The modification of link428to a resource node enables a client (i.e., client 1 server node102) to connect to a destination application (i.e., DestApp-1112) to perform a specific client interaction. The interlinking of resource nodes108based on routing policy table310provides the required/requested client services from the various resource nodes108available within DCS100. The resource nodes108provide multiple/redundant services and can be linked together in multiple different configurations to support the services requested by the client.

FIGS. 5A and 5Billustrate example resource node configurations500and550displayed in a graphical user interface505that can be shown on display244. In the discussion ofFIGS. 5A and 5B, reference is also made to elements described inFIG. 1andFIG. 2.FIG. 5Acomprises resource node configuration500that includes a destination application selection menu510and a service map520. Destination application selection menu510contains several destination application nodes including DestApp 1 node112, DestApp 2 node114and DestApp 3 node116. The destination application nodes112-116contain computing services that can be selectively accessed by a system administrator or user. The system administrator can select one or more destination application nodes112-116from destination application selection menu510using an input device260(FIG. 2). InFIG. 5A, DestApp-1 node112has been selected by the user and is indicated by dashed lines.

Service map520contains a graphical representation of the physical topology of the available resource nodes108and their connections180within DPS105. The resource nodes108shown on service map520include destination application nodes DestApp-1 node112, DestApp-2 node114and DestApp-3 node116and database server nodes DB2-1122, DB2-2 node124and DB2-3 node126. The resource nodes108shown on service map520further include lightweight directory application protocol nodes, LDAP-1 node132and LDAP-2 node134and websphere application nodes WAS-1 node142and WAS-2 node144. Several of the resource nodes108have been pre-determined to be active resource nodes and are in communication via network170. WAS-1 node142is active and communicatively connected to LDAP-1 node132via a communication connection X1522. WAS-1 node142is active and communicatively connected to DB2-1 node122via a communication connection Y1524. WAS-1 node142is active and communicatively connected to DestApp-1 node112via a communication connection Z1526.

A system administrator can modify a first configuration500of active resource nodes and connections between the active resource nodes by selecting one or more links, e.g., links528,530, and selecting and moving (e.g., via a drag and drop of) a link532. The links represent connections that can be rerouted or modified. Link528represents a connection between WAS-1 node142and LDAP-1 node132via connection X1522. Link530represents a connection between WAS-1 node142and DB2-1 node122via connection Y1524. Link532represents a connection between WAS-1 node142and DestApp-1 node112via connection Z1526. In one embodiment, the system administrator can depress a control key263on keyboard262to sequentially select multiple links. After the control key263has been depressed and held, a first manipulation of a selection affordance device (i.e., mouse264) is used to select link528representing connection X1522to be modified. After depressing and holding the control key263again, a second manipulation of a selection affordance device (i.e., mouse264) is used to select link530representing connection Y1524to be modified. The system administrator can then select and move (e.g., drag and drop) a link532representing connection Z1526using one of input devices260(i.e., mouse264). As shown inFIG. 5A, the user has selected connection Z1526and has moved (via drag and drop of) the link532to WAS-2144, as indicated by dashed lines. The move operation terminates on a destination active resource node (i.e., WAS-2144), while each of the plurality of links (i.e., links528,530and532) are selected.

After modification of the links have been detected, the rerouting software300executing on processor202automatically reroutes or modifies each of the new connections180through the destination active resource node based on the selected and moved links and the pre-determined routing policy table310. Turning toFIG. 5B, when a selection and modification of several links (i.e., links528,530and532) has been detected, the rerouting software300executing on processor202retrieves routing policy table310and identifies from the routing policy table310a second configuration550of the active resource nodes including the new connection X2562between WAS-2 node144and LDAP-2 node134, new connection Y2564between WAS-2 node144and DB2-2 node124and new connection Z2566between WAS-2 node144and DestApp1 node112. Processor202triggers DPS105to reroute or configure the active resource nodes according to the second configuration550and to establish the new connections X2562, Y2564and Z2566between the active resource nodes. Service map560shows the graphical representation of the physical topology of the second configuration550including the new connections X2562, Y2564and Z2566.

FIG. 6illustrates routing policy table310that is stored in system memory220. Routing policy table310is a pre-determined table that contains the specific configuration of connections180that can be established within DPS100to route services between the various resource nodes108. Routing policy table310is used by rerouting software processor202to reroute connections between resource nodes108of the DPS105. Routing policy table310stores the possible node combinations that can be used to physically connect resource nodes and deliver services that are associated with each resource node. In one embodiment, additional policy restrictions and criteria320can be applied to routing policy table310to select a combination of nodes based on desired criteria.

Routing policy table310comprises columns610of routing policy numbers602, destination nodes604, resource service nodes 1606, 2608, 3610and current configuration612. Routing policy numbers602identify the specific allowed configuration in each row620. Destination nodes604contain application computing services desired to be accessed by clients102and104. Resource service nodes 1606, 2608and 3610contain services associated with the delivery of the application computing services. Current configuration612identifies whether the configuration of resource nodes is the currently used configuration.

FIG. 7illustrates a flowchart of an example method for configuring active resource nodes in a distributed computing system when a single link is selected to be rerouted. Computer implemented method700can be implemented in ACM150. The description of the method is provided with general reference to the specific components illustrated within the preceding figures. In the discussion ofFIG. 7, reference is also made to elements described inFIGS. 1-6. Generally the method is described as being implemented via processor202and particularly by the execution of rerouting software300within processor202. It is however appreciated that certain aspects of the described methods may be implemented via other processing devices and/or execution of other code.

Method700begins at the start block and proceeds to block702where processor202identifies the available and active resource nodes108and connections180within DPS105. The available and active resource nodes and connections correspond to the first configuration400(FIG. 4A). At decision block704, processor202detects if a user has provided input to modify a link428. The user input is provided by selecting and moving (drag-and-drop) the link428representing at least one connection between the active resource nodes (i.e., WAS-1 node142and LDAP-1 node132via connection X1422inFIG. 4A). The user can drag and drop the link428using one of input devices260(i.e., mouse264). In response to detecting that a user has not provided input to modify a link, processor202continues to detect user input at block704.

In response to detecting that a user has provided input to modify a link, processor202determines the new service nodes from the user input (block706) and retrieves the routing policy table310from system memory220(block708). Processor202determines rows620in the routing policy table310that include the destination node and the new service nodes, and rows that do not include the disconnected service node (block710). Each row620in routing policy table310corresponds to a second configuration450of the active resource nodes including at least one new connection X2462between the two or more active resource nodes (i.e., WAS-1 node142and LDAP-2 node134).

At decision block712, processor202determines if multiple rows620from routing policy table310were selected at block710. In response to determining that multiple rows620from routing policy table310were selected at block710, in one embodiment, processor202determines which row620has the highest number of currently configured/deployed resource nodes108(block714) and selects the row620having the highest number of currently configured/deployed resource nodes108(block716). In another embodiment, policy restrictions and criteria320can be used to determine which specific row to select from among multiple rows620. In one embodiment, policy restrictions and criteria320can include a weighted scale to select a row with nodes that have a larger resource capacity. In another embodiment, policy restrictions and criteria320can include criteria that enforce selecting a row that has the fewest number of communication connection changes to achieve the desired reconfiguration action.

After block716has been completed and also in response to determining that multiple rows620from routing policy table310have not been selected (at block712), processor202triggers the DPS105to reroute or reconfigure the active resource nodes according to the selected row620(e.g., second configuration450). Processor202establishes the at least one new connection X2462between the active resource nodes (i.e. WAS-1 node142and LDAP-2 node134) (block718). Processor202updates the display244with the new second configuration450of destination nodes, service nodes and connections (i.e., service map460) (block720). Processor202updates the routing policy table310with the current second configuration450of destination nodes, service nodes and connections (block722) and then stores the updated routing policy table310to system memory220(block724). Method700then ends.

FIG. 8illustrates a flowchart of an exemplary method for configuring active resource nodes in a distributed computing system when multiple links are selected to be rerouted. Computer implemented method800can be implemented in ACM150. The description of the method is provided with general reference to the specific components illustrated within the preceding figures. In the discussion ofFIG. 8, reference is also made to elements described inFIGS. 1-6. Generally the method is described as being implemented via processor202and particularly by the execution of rerouting software300within processor202. It is however appreciated that certain aspects of the described methods may be implemented via other processing devices and/or execution of other code.

Method800begins at the start block and proceeds to block802where processor202identifies the available and active resource nodes108and connections180within DPS105. The available and active resource nodes and connections correspond to the first configuration500(FIG. 5A). At decision block804, processor202detects if a user has provided input to modify multiple links528,530and532to change the interconnection between multiple resource nodes108. The user input can be provided by depression of control key263on keyboard262and selection of multiple links. After the control key263has been depressed and held, a first manipulation of a selection affordance device (i.e., mouse264) is used to select link528representing connection X1522to be modified. After depressing and holding the control key263again, a second manipulation of the selection affordance device (i.e., mouse264) is used to select link530representing connection Y1524to be modified. After depressing and holding the control key263again, a third manipulation of the selection affordance device (i.e., mouse264) is used to select link532representing connection Z1526to be modified.

In response to detecting manipulation of control key263and selection affordance device264, processor202detects if a user has further performed a move operation (drag and drop) on a link (i.e., link532representing connection Z1526) using mouse264(decision block806). As shown inFIG. 5A, the user has selected connection Z1526and has moved (drag and drop) the link532to WAS-2144as indicated by dashed lines. The link532is moved to another active resource node (i.e. WAS-2144) while each of the plurality of links (i.e., links528,530and532) are selected. The user can modify the first configuration500of active resource nodes and connections between the active resource nodes by selecting multiple links528,530and532and moving (drag and drop) link532. The links represent connections that can be rerouted or modified. Link528represents a connection between WAS-1 node142and LDAP-1 node132via connection X1522. Link530represents a connection between WAS-1 node142and DB2-1 node122via connection Y1524. Link532represents a connection between WAS-1 node142and DestApp-1 node112via connection Z1526. In response to detecting that a user has not manipulated a control key or selection affordance device (decision block804) or moved links (decision block806), processor202continues to detect user input at decision block804.

In response to detecting that a user has provided input to modify multiple links at decision block806, processor202determines the new service nodes from the user inputs (block808) and retrieves the routing policy table310from system memory220(block810). Processor202determines the rows620in the routing policy table310that include the destination node and the new service nodes and that do not include the disconnected service node (block812). Each row620in routing policy table310corresponds to a second configuration550of the active resource nodes including multiple new connections X2562, Y2564and Z2566between the resource nodes.

At decision block814, processor202determines if multiple rows620from routing policy table310were selected at block812. In response to determining that multiple rows620from routing policy table310were selected at block812, in one embodiment, processor202determines which row620has the highest number of currently configured/deployed resource nodes108(block816) and selects the row620having the highest number of currently configured/deployed resource nodes108(block818). In another embodiment, policy restrictions and criteria320can be used to determine which specific row to select from among multiple rows620.

After block818has been completed and also in response to determining that multiple rows620from routing policy table310have not been selected (at decision block814), processor202triggers the DPS105to reroute or reconfigure the active resource nodes according to the nodes in the selected row620(i.e., second configuration550). Processor202establishes the multiple new connections X2562, Y2564and Z2566between the active resource nodes (block820). New connection X2562connects WAS-2 node144and LDAP-2 node134. New connection Y2564connects WAS-2 node144and DB2-2 node124. New connection Z2566connects WAS-2 node144and DestApp1 node112.

Processor202updates the display244with the new configuration550of destination nodes, service nodes and connections (i.e. service map560) (block822). Processor202updates the routing policy table310with the current second configuration550of destination nodes, service nodes and connections (block824) and stores the updated routing policy table310to system memory220(block826). Method800then ends.

In each of the flow charts above, one or more of the methods may be embodied in a computer readable medium containing computer readable code such that a series of steps are performed when the computer readable code is executed on a computing device. In some implementations, certain steps of the methods are combined, performed simultaneously or in a different order, or perhaps omitted, without deviating from the spirit and scope of the disclosure. Thus, while the method steps are described and illustrated in a particular sequence, use of a specific sequence of steps is not meant to imply any limitations on the disclosure. Changes may be made with regards to the sequence of steps without departing from the spirit or scope of the present disclosure. Use of a particular sequence is therefore, not to be taken in a limiting sense, and the scope of the present disclosure is defined only by the appended claims.

As will be further appreciated, the processes in embodiments of the present invention may be implemented using any combination of software, firmware or hardware. As a preparatory step to practicing the invention in software, the programming code (whether software or firmware) will typically be stored in one or more machine readable storage mediums such as fixed (hard) drives, diskettes, optical disks, magnetic tape, semiconductor memories such as ROMs, PROMs, etc., thereby making an article of manufacture in accordance with the invention. The article of manufacture containing the programming code is used by either executing the code directly from the storage device, by copying the code from the storage device into another storage device such as a hard disk, RAM, etc., or by transmitting the code for remote execution using transmission type media such as digital and analog communication links. The methods of the invention may be practiced by combining one or more machine-readable storage devices containing the code according to the present invention with appropriate processing hardware to execute the code contained therein. An apparatus for practicing the invention could be one or more processing devices and storage systems containing or having network access to program(s) coded in accordance with the invention.

Thus, it is important that while an illustrative embodiment of the present invention is described in the context of a fully functional computer (server) system with installed (or executed) software, those skilled in the art will appreciate that the software aspects of an illustrative embodiment of the present invention are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the present invention applies equally regardless of the particular type of media used to actually carry out the distribution.