TRADEMARKSIBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.
BACKGROUND OF THE INVENTION1. Field of the Invention
The teachings herein are related to a computing infrastructure and more particularly to an automated system for self-provisioning.
2. Description of the Related Art
When a solution is deployed in a computing infrastructure, various components (for example, servers, operating systems, databases, applications, network connections, etc.) must be selected, installed, configured, and interconnected both physically and logically. Overall, this process is referred to as “provisioning.” In a system which performs automated provisioning, one problem that needs to be addressed is the particular mechanism that is used to perform each of the provisioning actions (selection, installation, etc.). To date, provisioning has been at best a semi-automated process, in which a system administrator selects and/or modifies provisioning scripts based on his knowledge of the solution being deployed.
What is needed is a technique for automating provisioning in a computing infrastructure. Preferably, the technique provides for elimination of the administrator from the provisioning, at least by incorporating the knowledge of the administrator into the provisioning system.
SUMMARY OF THE INVENTIONThe shortcomings of the prior art are overcome and additional advantages are provided through the provision of a computer implemented method for provisioning a new resource in a computing infrastructure, the method including identifying the new resource for addition to the computing infrastructure; identifying other resources of the computing infrastructure for relating to the new resource, each of the other resources having a relationship factory routine for establishing relationships; ranking each relationship factory according to a relationship of the respective other resource with the new resource; selecting a relationship factory for provisioning the new resource; and provisioning the new resource according to the relationship factory for provisioning.
A computer program product stored on machine readable media, the product having instructions for provisioning a new resource in a computing infrastructure, the instructions including: identifying the new resource added to the computing infrastructure; identifying other resources of the computing infrastructure for relating to the new resource, each of the other resources having a relationship factory for establishing relationships; ranking each relationship factory according to a relationship of the respective other resource with the new resource; selecting a relationship factory for provisioning the new resource; and provisioning the new resource according to the relationship factory for provisioning.
System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with advantages and features, refer to the description and to the drawings.
TECHNICAL EFFECTSAs a result of the summarized invention, technically we have achieved a solution in which a computer program product stored on machine readable media is provided, the product including instructions for provisioning a new resource in a computing infrastructure, the instructions for identifying the new resource added to the computing infrastructure; wherein the new resource has at least one of a server, operating system, database, application, network connection and adapter; identifying other resources of the computing infrastructure for relating to the new resource, each of the other resources having a relationship factory for establishing relationships; ranking each relationship factory in a hierarchy according to a relationship of the respective other resource with the new resource by calculating at least one of a source-endpoint distance and a target-endpoint distance in a recursive manner; selecting a relationship factory for provisioning the new resource; and provisioning the new resource according to the relationship factory for provisioning; wherein provisioning calls for registering a new relationship factory for the new resource and establishing at least one of a physical relationship and a logical relationship with the new resource.
BRIEF DESCRIPTION OF THE DRAWINGSThe subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
FIG. 1 illustrates aspects of resources for a computing infrastructure;
FIG. 2 illustrates resources and relationships in a computing infrastructure;
FIG. 3 illustrates part of an inheritance hierarchy of resource types in a computing infrastructure;
FIG. 4 illustrates resources, relationships and relationship factories for enhancing the computing infrastructure;
FIG. 5 illustrates an exemplary method for ranking relationship factories; and
FIG. 6 depicts aspects of a provisioning system.
The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings.
DETAILED DESCRIPTION OF THE INVENTIONReferring now toFIG. 1, an embodiment of adata processing system100 is depicted.System100 has one or more central processing units (processors)101a,101b,101c,etc. (collectively or generically referred to as processor(s)101). Processors101 are coupled tosystem memory250 and various other components via asystem bus113. Read only memory (ROM)102 is coupled to thesystem bus113 and may include a basic input/output system (BIOS), which controls certain basic functions ofsystem100.
FIG. 1 further depicts an I/O adapter107 and anetwork adapter106 coupled to thesystem bus113. I/O adapter107 may be a small computer system interface (SCSI) adapter that communicates with ahard disk103 and/ortape storage drive105 or any other similar component. I/O adapter107,hard disk103, andtape storage device105 are collectively referred to herein asmass storage104. Anetwork adapter106interconnects bus113 with an outside network enablingdata processing system100 to communicate with other such systems.Display monitor136 is connected tosystem bus113 bydisplay adaptor112, which may include a graphics adapter to improve the performance of graphics intensive applications and a video controller. In one embodiment,adapters107,106, and112 may be connected to one or more I/O busses that are connected tosystem bus113 via an intermediate bus bridge (not shown). Suitable I/O buses for connecting peripheral devices such as hard disk controllers, network adapters, and graphics adapters typically include common protocols, such as the Peripheral Components Interface (PCI) bus. Additional input/output devices are shown as connected tosystem bus113 viauser interface adapter108 anddisplay adapter112. Akeyboard109,mouse110, andspeaker111 all interconnected tobus113 viauser interface adapter108 may be included.
Thus, as configuredFIG. 1, thesystem100 includes a variety of resources and a variety of relationships between the resources. Clearly, one skilled in the art will recognize that thesystem100 ofFIG. 1 is a vastly simplified sketch of components that may only be a part of a computing infrastructure.
One skilled in the art will recognize that thesystem100 depicted inFIG. 1 represents only a fraction of the resources and the relationships provided in a typical computer infrastructure. For example, in the typical computer infrastructure, other components such as network connections, routers, bridges, firewalls, switches, servers, middleware and other components as are known in the art may be available. Accordingly, it should be understood that as discussed herein, the computer infrastructure may include any one or all of such components. The computer infrastructure provides an environment for the teachings herein.
Referring now toFIG. 2, there are shown aspects of acomputer infrastructure10 where nodes represent resources8 (services) of the computing infrastructure (e.g., servers, operating systems, databases) andrelationships5 among thoseresources8 are depicted. Therelationships5 may include a variety of associations. For example, onerelationship5 includes a server hosting an operating system; anotherrelationship5 includes an operating system hosting an instance of WebSphere; and athird relationship5 includes a WebSphere hosting an enterprise application. The teachings herein provide for associating different instances ofrelationships5 with specific provisioning agents and actions, depending on the type of therelationship5 and the characteristics of the tworelated resources8.
When a solution (i.e., the resource8) is deployed into acomputing infrastructure10, the various components of that solution (servers, operating systems, databases, applications, network connections, adapter etc.) must be selected, installed, configured, and interconnected both physically and logically. This installation process is generally referred to as “provisioning”. In a system that performs automated provisioning ofresources8, one problem that needs to be addressed is the particular mechanism that is used to perform each of the provisioning actions (selection, installation, etc.). Some efforts have provided for provisioning as a semi-automated process, in which a system administrator at least one of selects and modifies provisioning scripts based on his knowledge of the solution being deployed.
The teachings herein provide for elimination of aspects of the administrator functions from provisioning, and applies knowledge of the administrator to the provisioning system.
As disclosed herein, aspects of prior art technologies are applied to address automated provisioning. The “Factory Pattern”, well known in the art of object-oriented programming (see http:/en.wikipedia.org/wiki/Factory_method_pattern), serves, in part, as a basis for design of the teachings disclosed herein.
The techniques of the present invention provide for, among other things: specific provisioning agents that are registered as relationship factories for establishingparticular relationships5; and a search algorithm and use thereof for selecting a correct provisioning agent to establish a desiredrelationship5. Typically, relationship factories are maintained as at least executable module written in some suitable programming language. The at least one executable module typically accompanies aresource8, such as in the form of a driver.
Each of the relationship factories includes information necessary for establishing aspects of a givenrelationship5. For example, each relationship factory includes aspects of information typically known to or maintained by an administrator. Exemplary aspects include requirements for establishing logical and physical relationships with the associatedresource8.
Consider the following non-limiting example depicted inFIG. 3. InFIG. 3,resources8 andrelationships5 are described. First, assume that there is an inheritance hierarchy among all of the types ofresources8 that are used in thecomputing infrastructure10. For example, a top-level resource type might just be named “Resource.” Additionally, “Servers” and “OperatingSystems” are “Resources.” “Windows XP” and “Linux” are both “OperatingSystems “; while “xSeries ” is a “Server.” In this example, “Server” is to host to “OperatingSystem.” Accordingly, there is a “hosts”relationship5 between “Server” and “OperatingSystem” (and, by implication, to all respective subtypes). This also describes apotential relationship5 in that the “xSeries” might be able to host “Windows XP” or “Linux”, since each are subtypes of “Server” and “OperatingSystem” respectively.
Note that in atypical computing infrastructure10, there are numerous different resource types. The number ofpossible relationships5 increases greatly as the number of resource types grows. Hence, it has not been possible to have knowledge of how to establish every aspect of each of thesepossible relationships5. This problem has been exacerbated by dynamic introduction ofresources8. In these instances, provisioning knowledge for thesenew resources8 needs to be dynamically introduced. Therefore, a flexible and generalized system is need to provide for automated provisioning.
Accordingly, a concept referred to as a “relationship factory” is provided herein as a technique for automated provisioning. Relationship factories include, among other things, the knowledge required for the establishment of a certain relationship type between two certain resource types. Each relationship factory may have an arbitrary number of sub-factories. Typically, each sub-factory is registered with a respective parent relationship factory. Registration is usually performed during runtime by calling the register( ) method for the parent relationship factory, where the relationship factory, which is to be registered, is passed as a parameter along with the relationship type (e.g., “hosts”) and the pair of resource types (e.g., “Server”, “OperatingSystem”) that are handled by this relationship factory. The result is a tree of relationship factories, where one relationship factory provides a root relationship factory. The root relationship factory is typically the starting point for any relationship establishment operations.
In the following non-limiting example, and with reference toFIG. 4, there is arelationship factory11 referred to as a “HostsRelationshipFactory”, which includes information regarding how to establish a “hosts”relationship5 between twoarbitrary resources8. In this example, the “HostsRelationshipFactory” has limited and generic information. Included is anotherrelationship factory11, referred to as a “xSeriesHostsOperatingSystemRelationshipFactory”, which has further specialized information regarding how to establish the “hosts” relationship. For example, the further specialized information may be directed to a “hosts”relationship5 between “xSeries” and “OperatingSystem.” In this example, both the “HostsRelationshipFactory” and the “xSeriesHostsOperatingSystemRelationshipFactory”relationship factories11 are registered at a top-level Relationship Factory. In this example, the top-level relationship factory11 is referred to as the “RootRelationshipFactory.” The “RootRelationshipFactory” is not illustrated for purposes of simplicity.
At this point in the provisioning process, an algorithm is used to search therelationship factories11 to buildappropriate relationships5. For example, when it comes to the point in the provisioning process when ahosts relationship5 between aresource8 of the type “xSeries” and aresource8 of the type “Windows XP” has to be established, a method like createRelationship (“Hosts”, “xSeries,” “WindowsXP”) is invoked on the factory “RootRelationshipFactory.” This initiates a search over all of registered sub-relationship factories to find the one that is most suitable.
In this example, a first step involves examining the “HostsRelationshipFactory” to determine how well this relationship factory addresses the task of establishing thisrelationship5. As previously discussed, the “HostsRelationshipFactory” contains information regarding how to establish a “hosts” relationship between tworesources8.
In order to determine a goodness of fit, suitability of therelationship factory11 is ranked. Note that each level of inheritance (seeFIG. 3) has a certain level; the root has level zero, all children of the root have level one, the children of these children have a level of two, and so forth.
Referring toFIG. 5, an exemplary method for ranking40 is depicted. As a first step in ranking40, source-endpoint distance (SED)calculation41 is conducted. In the source-endpoint distance calculation41, the source-endpoint distance (SED) from the source-endpoint resource type (xSeries) to the source-endpoint of the relationship factory type (Resource) is calculated:
SED=“xSeries−Resource”=2−0=2 (1).
As a second step in ranking40, a target-endpoint distance (TED)calculation42 is conducted. In the target-endpoint distance calculation42, a target-endpoint distance (TED) from the target-endpoint resource type (Windows XP) to the target-endpoint of the relationship factory type (Resource) is calculated:
TED=“Windows XP”−“Resource”=2−0=2 (2).
As a third step in ranking40,summation43 is conducted. Insummation43, the sum of the two results is calculated:
Sum=SED+TED=2+2=4 (3).
It is important to ensure that each of the intermediate results (the SED and the TED) are not less than 0. Where either of the SED and the TED are less than zero, selection of the designatedrelationship factory11 can be canceled (thisrelationship factory11 is too specialized for the given resource8).
Oncesummation43 is completed,annotation44 is used to supply eachrelationship factory11 with a rank. In typical embodiments, the larger the result ofsummation43 is, the lower the suitability of the selectedrelationship factory11 for establishing the desired relationship type between two givenresources8. From theranking40, a bestsuited relationship factory11 is identified.
Consider againFIG. 4, and evaluation of the “xSeriesHostsOperatingSystemRelationshipFactory”:
SED=“xSeries”−“xSeries”=0
TED=“Windows XP”−“OperatingSystem”=1
Sum=SED+TED=0+1=1
Since 1<4 the “xSeriesHostsOperatingSystemRelationshipFactory” is selected as apreferred relationship factory11 over the “HostsRelationshipFactory.”
In this simplified example, the search ends at this point as there are nomore relationship factories11 available. However, in other more realistic embodiments,numerous relationship factories11 are evaluated by ranking40. In the general case, after the best-suited relationship factory11 has been found, the search process continues and provides for evaluation of all the sub-relationship factories for the bestsuited relationship factory11. This is typically performed in a recursive manner until the relationship factory for provisioning has been found. Once identified, the relationship factory for provisioning is then applied to provide for provisioning of the solution.
As a matter of course, the teachings herein may be applied to any resource types and any relationship types.
The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof. As one example, the system for provisioning, including algorithms, relationship factories and other associated aspects may be implemented in software using various hardware components. In some embodiments, the software is designed to propagate automatically throughout thecomputer infrastructure10. In some of these embodiments, automatic recognition features may be included. For example, the provisioning system may include an index for associatingcertain relationship factories11 with correlatingresources8 in the background.
Exemplary components of the provisioning system are depicted inFIG. 6. InFIG. 6, theprovisioning system50 includes at least onealgorithm51. The at least onealgorithm51 provides for, among other things, ranking40 of the various relationship factories. Theprovisioning system50 includes other modules as necessary. Non-limiting examples of other modules including amaintenance module55, anadditions module56, a registration module57 and others. Exemplary functions of themaintenance module55 include updating of structures for therelationship factory11 and others. Exemplary functions for theadditions module56 include obtaining information for establishing relationship factories, and associating arelationship factory11 with a givenresource8. Exemplary functions for the registration module57 include registering of eachrelationship factory11. Other modules may be included as deemed suitable.
Therelationship factory11 includes various components, non-limiting examples including theroot relationship factory52, a plurality of parent relationship factories53 (eachparent relationship factory53 having a plurality of sub-relationship factories54). As one can see by the diagram inFIG. 6, therelationship factory11 may include a tree structure that is useful for searching the hierarchy of the various relationship factories. Theprovisioning system50 draws onresources8 of thecomputing infrastructure10 for operation, and enhances therelationships5 of thecomputing infrastructure10 in accordance with the teachings herein.
One or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.