Method and apparatus for providing topology based enterprise management services5878431Abstract A method and system with associated data structures for providing management of topological associations between objects. The methods define an application programs interface (API) which specifies a consistent approach for the design of application programs to manage topological associations between objects. Objects each represent an aspect of a resource which is useful to a particular application program. Application programs define a resource aspect type for each object to be managed by the API. Objects are specified to the API by application programs along with resource names to identify a resource. The methods and structures of the present invention automatically recognize when the resource names of an object to be managed identify the same resource as other managed objects to thereby allow information to be more readily shared among disparate application programs and to reduce redundant storage of information by those programs. Claims What is claimed is:
__________________________________________________________________________
Rules
Resource Aspect Type
Role Min.
Max.
Associated Resource Aspect Type
__________________________________________________________________________
logical.sub.-- network
network 0 1 logical.sub.-- network.sub.-- containment
network 0 1 logical.sub.-- segment.sub.-- containment
logical.sub.-- network.sub.-- containment
container
0 1 logical.sub.-- network
container
0 N logical.sub.-- segment
logical.sub.-- segment.sub.-- containment
container
0 1 logical.sub.-- segment
container
0 N logical.sub.-- network
logical.sub.-- node
logical.sub.-- device
0 1 logical.sub.-- node.sub.-- containment
logical.sub.-- node.sub.-- containment
container
0 1 logical.sub.-- node
container
0 N logical.sub.-- if
logical.sub.-- if
interface
0 1 logical.sub.-- node.sub.-- containment
interface
0 1 logical.sub.-- interface.sub.-- connection
logical.sub.-- interface.sub.-- connection
connector
0 1 logical.sub.-- if
connector
0 1 logical.sub.-- segment
logical.sub.-- segment
segment 0 N logical.sub.-- interface.sub.-- connection
segment 0 1 logical.sub.-- boundary
segment 0 1 logical.sub.-- network.sub.-- containment
segment 0 1 logical.sub.-- segment.sub.-- containment
logical.sub.-- boundary
bounds 0 N logical.sub.-- segment
bounds 0 N logical.sub.-- connector (inherited)
logical.sub.-- connector
connection device
0 1 logical.sub.-- boundary
__________________________________________________________________________
17. A computer based method as in claim 16, wherein the resource aspect type logical.sub.-- segment further comprises the rule in the following table:
______________________________________
Rules
Associated Resource
Resource Aspect Type
Role Min. Max. Aspect Type
______________________________________
logical.sub.-- segment
segment 0 1 physical.sub.-- network
______________________________________
18. A computer based method as in claim 17, wherein the resource aspect types and rules further comprise those in the following table:
__________________________________________________________________________
Rules
Resource Aspect Type
Role Min.
Max.
Associated Resource Aspect Type
__________________________________________________________________________
physical.sub.-- network
phy.sub.-- network
0 1 logical.sub.-- segment
phy.sub.-- network
0 1 physical.sub.-- segment.sub.-- containment
physical.sub.-- segment.sub.-- containment
container
0 1 physical.sub.-- network
container
0 N physical.sub.-- segment
physical.sub.-- node
chasis 0 1 physical.sub.-- node.sub.-- containment
physical.sub.-- node.sub.-- containment
container
0 N physical.sub.-- if
container
0 1 physical.sub.-- node
physical.sub.-- if
interface
0 1 physical.sub.-- node.sub.-- containment
interface
0 1 physical.sub.-- interface.sub.-- connection
physical.sub.-- interface.sub.-- connection
connector
0 1 physical.sub.-- if
connector
0 1 physical.sub.-- segment
physical.sub.-- segment
segment
0 N physical.sub.-- interface.sub.-- connection
segment
0 1 physical.sub.-- boundary
segment
0 1 physical.sub.-- segment.sub.-- containment
physical.sub.-- boundary
bounds 0 N physical.sub.-- segment
bounds 0 N physical.sub.-- connector (inherited)
physical.sub.-- connector
bounds 0 1 physical.sub.-- boundary
__________________________________________________________________________
19. A computer based method as in claim 18, wherein the resource aspect type logical.sub.-- segment further comprises the rule in the following table:
______________________________________
Rules
Associated Resource
Resource Aspect Type
Role Min. Max. Aspect Type
______________________________________
physical.sub.-- segment
segment 0 1 media.sub.-- containment
______________________________________
20. A computer based method as in claim 19, wherein the resource aspect types and rules further comprise those in the following table:
__________________________________________________________________________
Rules
Resource Aspect Type
Role Min.
Max.
Associated Resource Aspect Type
__________________________________________________________________________
media.sub.-- containment
attachment
0 1 physical.sub.-- segment
container
0 1 media.sub.-- network
media.sub.-- network
media.sub.-- network
0 1 media.sub.-- containment
media.sub.-- container
0 N media.sub.-- cable
media.sub.-- terminator
termination
0 1 media.sub.-- cable
media.sub.-- cable
physical.sub.-- wire
0 1 media.sub.-- terminator
physical.sub.-- wire
0 1 media.sub.-- fitting
physical.sub.-- wire
0 2 media.sub.-- connector
physical.sub.-- wire
0 1 media.sub.-- network
media.sub.-- fitting
cable.sub.-- ink
0 1 media.sub.-- cable
media.sub.-- connector
connector
0 1 media.sub.-- cable
__________________________________________________________________________
21. A system for managing topological associations among a number of objects stored in an information base, each of the number of objects possessing a number of resource names, comprising: a) a resource aspect type store comprising resource aspect types, each resource aspect type comprising a number of rules defining permitted associations for object instances of the resource aspect type, wherein each of the number of objects stored in the information base is an instance of one of the resource aspect types; and b) computer code for determining one or more resource name closure sets encompassing the number of objects stored in the information base, each of the one or more resource name closure sets comprising a largest subset of the number of objects stored in the information base such that each object of the largest subset shares a resource name with at least one other object of the largest subset, wherein the objects of each resource name closure set define a resource, and the resource names of said objects uniquely identify said resource. Description BACKGROUND OF THE INVENTION
TABLE 1
______________________________________
Resource aspect type (RAT) Rules
Rules
RAT Role Min Max Associated RAT
______________________________________
Electrical.sub.-- Device
Sink 0 1 Power.sub.-- Supply
110 V.sub.-- Device
Sink 0 1 Power.sub.-- Supply
Sink 0 1 (inherited)
110 V Power
220 V.sub.-- Device
Sink 0 1 Power.sub.-- Supply
Sink 0 1 (inherited)
220 V Power
Power.sub.-- Outlet
Source 0 1 Power.sub.-- Supply
110 V.sub.-- Outlet
Source 0 1 Power.sub.-- Supply
Source 0 1 (inherited)
110 V Power
220 V.sub.-- Outlet
Source 0 1 Power.sub.-- Supply
Source 0 1 (inherted)
220 V Power
Power.sub.-- Supply
Sink 1 1 Electrical.sub.-- Device
Source 1 i Power.sub.-- Outlet
110 V.sub.-- Power
Sink 1 1 Electrical.sub.-- Device
Sink 1 1 (inherited)
Source 1 1 110 V.sub.-- Device
Source 1 1 Power.sub.-- Outlet
(inherited)
110 V.sub.-- Outlet
220 V.sub.-- Power
Sink 1 1 Electrical.sub.-- Device
Sink 1 1 (inherited)
Source 1 1 220 V.sub.-- Device
Source 1 1 Power.sub.-- Outlet
(inherited)
220 V.sub.-- Outlet
______________________________________
The table shows how rules specified for a more generalized type also apply to specializations of that type. For example, a resource aspect typed as a 110 V.sub.-- Device must participate in associations (on its Sink role) with resource aspects that are classified as both Power.sub.-- Supply and 110 V.sub.-- Power by resource aspect types (RATs). Both rules apply. As it turns out, a resource aspect of type 110 V.sub.-- Power will comply with both rules because a resource aspect type 110 V.sub.-- Power is a specialization of the Power.sub.-- Supply resource aspect type. However, a resource aspect type of Power.sub.-- Supply will not comply with both rules and so is invalid. With the topology semantics defined, the developer can now use topology to create, update, delete, and query associations between resource aspects. The following table 2 specifies the resource aspects for the electrical devices:
TABLE 2
______________________________________
Resource aspects
Resource aspect Resource aspect Type
______________________________________
VDU 220 V.sub.-- Device
Tape.sub.-- Unit 220 V.sub.-- Device
Paper.sub.-- Shredder
110 V.sub.-- Device
X.sub.-- Terminal 110 V.sub.-- Device
PC 110 V.sub.-- Device
PO-110-1 110 V.sub.-- Outlet
PO-110-2 110 V.sub.-- Outlet
PO-110-3 110 V.sub.-- Outlet
PO-220-1 220 V.sub.-- Outlet
PO-220-2 220 V.sub.-- Outlet
P1 220 V.sub.-- Power
P2 220 V.sub.-- Power
P3 110 V.sub.-- Power
P4 110 V.sub.-- Power
P5 110 V.sub.-- Power
______________________________________
With the specified constraints, the developer can create the following associations:
TABLE 3
______________________________________
Valid associations
Resource Aspect
Role Resource Aspect
Role
______________________________________
P1 Source PO-220-1 Source
P1 Sink VDU Sink
P2 Source PO-220-2 Source
P2 Sink Tape.sub.-- Unit
Sink
P3 Source PO-110-1 Source
P3 Sink Paper.sub.-- Shredder
Sink
P4 Source PO-110-2 Source
P4 Sink X.sub.-- Terminal
Sink
P5 Source PO-110-3 Source
P5 Sink PC Sink
______________________________________
The problem to be solved specifies that 110 V.sub.-- Devices are not able to form associations with 220 V.sub.-- Outlets and visa versa. The resource aspect rules ensure that these restrictions are enforced in the enterprise topological database. The cardinality constraints expressed for the 110 V.sub.-- Devices and 220 V.sub.-- Devices ensure that each device can only participate in one association with an appropriate Power.sub.-- Supply resource aspect. Similarly the cardinality constraints on the 110 V.sub.-- Outlets and 220 V.sub.-- Outlets ensure that each is associated with only one Power.sub.-- Supply. This combination of rules ensures that only one device of the appropriate power rating will be plugged into each outlet of the same power rating. The developer can pose queries on the topological stored information base. Only very simple queries can be demonstrated for this example. Some possible queries may include: Which outlets are the 220 V Devices connected to? Is the paper shredder plugged into power outlet PO-220-1? Which device is plugged into power outlet PO-110-3? NETWORK TOPOLOGY SERVICE EXAMPLE Logical Network Layer Topology Model: This example topology utilizes the topological management service of the present invention to manage a logical network. This topological model is generalized enough that it may be used with appropriate specializations of the resource aspect types to manage the topology of, for example, a TCP/IP network, a Novell network, a Vines network, or most other commercially available network models. This topology is composed of a "logical.sub.-- network" which further comprises a collection of objects and associations between the objects. The logical.sub.-- network has a basic set of objects and associations common to most network topologies and can therefore be used to manage the topology of most commercially available networks. In addition, any specific network implementation, (an IP network for example), has network specific semantic rules which must be followed. This logical.sub.-- network topology model defines the basic network objects and associations without regard to specific network semantics. The objects managed by this exemplary application of the topology management service of the present invention are depicted graphically in FIG. 20 (as well as described in tables below). A logical.sub.-- network 2012 of FIG. 20 is an aggregation of the objects which participate in the network and any related associations. Not all objects shown must participate in a specific network implementation. That is, some network semantics may not make use of a given object or association. The resource aspect types defined in this model are:
______________________________________
logical.sub.-- node
A logical.sub.-- node 2000 contains zero or more
logical.sub.-- ifs 2004 (logical interfaces). A
logical.sub.-- node 2000 is a member of zero or more
logical.sub.-- segments 2018 by virtue of a single
logical.sub.-- if 2004.
logical.sub.-- if
A logical.sub.-- if 2004 (logical interface) is contained
by a single logical.sub.-- node 2000. A logical.sub.-- if 2004
is
connected to a single logical.sub.-- segment. A logical.sub.--
if
2004 implies that a logical.sub.-- node 2000 is a
member of a logical.sub.-- segment 2018.
logical.sub.-- segment
A logical.sub.-- segment 2018 is connected to zero
or more logical.sub.-- ifs 2004. A logical.sub.-- segment
2018 is bounded by zero or more
logical.sub.-- connectors 2006. A logical.sub.-- segment
2018 may contain another logical.sub.-- network 2012 to
define additional layers of detail of a
logical.sub.-- network 2012, or may contain a
physical.sub.-- network 2032 (which thereby ends the
nesting definitions of logical.sub.-- networks).
logical.sub.-- connector
A logical.sub.-- connector 2006 is a specialization of a
logical.sub.-- node 2000. A logical.sub.-- connector 2006
bounds zero or more logical.sub.-- segments 2018.
logical.sub.-- network
A logical.sub.-- network 2012 contains zero or more
logical.sub.-- segments 2018 and is contained by zero or
more logical.sub.-- segments 2018. That is, a
logical.sub.-- segment 2018 at a given protocol layer is
implemented by a logical.sub.-- network 2012 at a lower
protocol layer.
______________________________________
The relationship between logicaL.sub.-- segment 2018 and logical.sub.-- network 2012 requires additional explanation. Note that a logical.sub.-- segment 2018 contains a single logical.sub.-- network 2012. In this sense, a logical.sub.-- segment 2018 at one layer defines a logical.sub.-- network 2012 at the layer below it. In this manner the layered models of most network products may be represented in the topological constructs of the present invention. An entire layer of a network "protocol stack" may be represented as a logical.sub.-- segment 2018 within the layer above it. The seven layer ISO and the TCP/IP layered models are exemplary of such layered protocol stacks. However, note also that a logical.sub.-- network 2012 may be contained by multiple logical.sub.-- segments 2018. Other logical.sub.-- networks 2012 (perhaps reflecting other protocols implemented at the same protocol layer) may also contain the same lower logical.sub.-- network 2012, hence the given cardinality. For example, in TCP/IP network communications, several TCP protocol applications (ftp and teinet for example) may utilize the same underlying TCP layer (which in turn utilizes the IP layer, which in turn utilizes the lower link layers). The containment, connection, and bounding associations described above are represented in the model as resource aspect types. These RATs are used to associate one element of the logical network with another.
______________________________________
logical.sub.-- network.sub.-- containment
2014 associates a logical.sub.-- network 2012
with its containing logical.sub.-- segment
2018.
logical.sub.-- segment.sub.-- containment
2016 associates a logical.sub.-- network 2012
with its contained logical.sub.-- segments
2018.
logical.sub.-- node.sub.-- containment
2002 associates a logical.sub.-- if 2004 with
its containing logical.sub.-- node 2000.
logical.sub.-- interface.sub.-- connection
2010 associates a logical.sub.-- segment
2018 with its connected logical.sub.-- if 200.
logical.sub.-- boundary
2008 associates a logical.sub.-- segment
2018 with its bounding
logical.sub.-- connectors 2006.
______________________________________
Using this model it is possible to construct a representation of a network at a given protocol layer. With the relationship between a logical.sub.-- segment 2018 and other logical.sub.-- networks 2012, it is possible to build up multiple networks, each representing a protocol layer, and relate higher order layers onto the lower order layers they depend on. For example, consider ip.sub.-- network 1050 of FIG. 10. In this example ip.sub.-- nodes 1000 and 1002 are each a specialization of the resource aspect type logical.sub.-- node. Similarly, ip.sub.-- if 1004 and 1006 are each a specialization of the resource aspect type logical.sub.-- if, ip.sub.-- router 1012 is a specialization of logical.sub.-- connector, and ip.sub.-- subnet 1008 and 1010 is each a specialization of logical.sub.-- segment. The ip.sub.-- subnet 1008 and 1010 (logical.sub.-- segment) objects are supported by a complete logical.sub.-- network at a lower layer (consisting of nodes, interfaces, segments, and possibly connectors). The ip.sub.-- subnet 1008 is said to contain this lower order network, namely ip.sub.-- network 1052 and ip subnet contains ip.sub.-- network 1054. A more complete example, showing multiple layers and their relationships, is presented below. Physical Network Layer Topology Model: The physical.sub.-- network 2032 model of FIG. 20 is slightly different from the logical.sub.-- network 2012. For the most part, it is a specialization of the logical.sub.-- network 2012 model described above. The physical.sub.-- network 2032 topology objects are each largely inherited from the equivalent logical topology object. Physical.sub.-- segments 2036 are bounded by physical.sub.-- connectors 2026 through physical.sub.-- boundary objects 2028. Physical.sub.-- connectors 2026 are specializations of physical.sub.-- nodes 2020 which contain physical.sub.-- interfaces 2024 through physical.sub.-- node.sub.-- containment objects 2022. Physical.sub.-- segments 2036 are defined by physical.sub.-- interfaces 2024 through physical.sub.-- interface.sub.-- containment objects 2030. A physical.sub.-- segment 2036 is contained in a physical.sub.-- network 2032 by a physical.sub.-- segment.sub.-- containment object 2034. A physical.sub.-- segment 2036, in turn, contains a media.sub.-- network 2038 through a media.sub.-- containment object 2040. The key difference from a logical.sub.-- network model is that a physical.sub.-- segment 2036 may only contain a media.sub.-- network 2038 through a media.sub.-- containment 2040 object, thus providing a termination to the recursion implied by the relationship between logical.sub.-- segment 2018 and logical.sub.-- network 2012. In all other respects the physical topology model and the objects within it are derived from the logical topology model. Specifically, since a physical.sub.-- network 2032 is a subtype (subclass) of logical.sub.-- network 2012, it can be contained by a logical.sub.-- segment 2018. In most cases, the lowest level modeled in the Network Topology Service will be the physical.sub.-- network 2032. Media Network Layer Topology Model: The lowest possible network topology layer is the media.sub.-- network 2038 of FIG. 20. This is basically a collection of hardware that forms the physical transmission medium. Though this layer model is rarely required for network management applications, it is described herein to demonstrate the interrelationship of diverse aspects of the same resources. In some cases, for example, the application developer may want to model this layer for inventory purposes. Another potentially significant use of the media.sub.-- network 2038 layer model includes verifying that an intended use of a media installation conforms to the requirements of the upper layer protocol. Media network layout might very well be the domain of some other agency within an enterprise, such as a site telecom or communication department, rather than a network management department. However, the topology management services of the present invention permit the integration of all information relating to a managed topology so that a consistent view may be maintained from all aspects of the information. The media.sub.-- network 2038 layer objects are intended to be very flexible. A media.sub.-- cable 2042 might be a line of sight path from one infrared transceiver to another, or a packet radio frequency as well as conductive wiring.
______________________________________
media.sub.-- network
2038 this is the highest level of the low level
media elements contained by a
physical.sub.-- segment 2036.
media.sub.-- terminator
2048 not all media technologies require
termination, but if they do, here it is.
media.sub.-- cable
2042 a media cable is anything which
connects any two other media elements.
media.sub.-- fitting
2044 this may be a barrel or tee connector in
thinLAN Ethernet, a media filter in Token
Ring, or anything else found between or at the
end of cables. Connectors which are an integral
part of the cable, like RJ-45 connectors at the
end of a twisted-pair cable, are usually
considered part of the cable and are not
modelled separately (although there is no
restriction saying they can't be).
media.sub.-- connector
2046 this might be something as simple as a
telephone wire punch-down block for twisted-
pair, or as complex as a passive, unmanaged
Token Ring MAU.
media.sub.-- containment
2040 is the resource aspect type used to
associate a media.sub.-- network 2038 with its
containing physical.sub.-- segment 2036.
______________________________________
Network Multi-layered Topology Example: In FIG. 10 a single layer of an exemplary network was presented. The example shown in FIG. 11 extends the example depicted in FIG. 10 by exploding the lower ip.sub.-- networks, 1052 of FIG. 10 for example, using all the models described above (the logical, physical and media layers). In the example depicted in FIG. 11 the several objects are shown with the following derivation in table 4:
TABLE 4
______________________________________
Object Derivations for FIG. 11
Resource Aspect Type
Specialization of:
______________________________________
ip.sub.-- network logical.sub.-- network
ip.sub.-- node logical.sub.-- node
ip.sub.-- if logical.sub.-- if
ip.sub.-- router logical.sub.-- connector
ip.sub.-- subnet logical.sub.-- segment
link.sub.-- network logical.sub.-- network
link.sub.-- node logical.sub.-- node
link.sub.-- if logical.sub.-- if
link.sub.-- bridge logical.sub.-- connector
link.sub.-- segment logical.sub.-- segment
10baset.sub.-- network
physical.sub.-- network
10baset.sub.-- node physical.sub.-- node
10baset.sub.-- if physical.sub.-- if
10baset.sub.-- hub physical.sub.-- connector
10baset.sub.-- segment
physical.sub.-- segment
tp.sub.-- network media.sub.-- network
RJ-45.sub.-- jack media.sub.-- fitting
tp.sub.-- cable media.sub.-- cable
tp.sub.-- block media.sub.-- connector
______________________________________
In FIG. 11 the top level network, as in FIG. 10, is an ip.sub.-- network 1160 comprising ip.sub.-- nodes 1102 and 1104 which contain ip.sub.-- ifs (interfaces) 1106 and 1108, respectively. Each ip.sub.-- node 1102 and 1104 is connected, through ip.sub.-- ifs 1106 and 1108, respectively, to ip.sub.-- router 1114 via ip.sub.-- subnets 1110 and 1112, respectively. Each ip.sub.-- subnet 1110 and 1112 comprises a lower level logical.sub.-- network. lp.sub.-- subnet 1110 shows its lower level subnet exploded as link.sub.-- network 1170. link.sub.-- network 1170 represents a logical.sub.-- network layer of a typical ip.sub.-- network which is using (for example) 802.3 protocols (Ethernet) for data exchange. One of ordinary skill in the art will recognize that similar constructs may be utilized to represent other physical layer models (such as token ring). link.sub.-- network 1170 comprises link.sub.-- nodes 1116 and 1118 which contain link.sub.-- ifs (interfaces) 1120 and 1122, respectively. Each link.sub.-- node 1116 and 1118 is connected, through link.sub.-- ifs 1120 and 1122, respectively, to link.sub.-- bridge 1128 via link.sub.-- segments 1124 and 1126, respectively. Each link.sub.-- segment 1124 and 1126 comprises a lower level physical.sub.-- network. link.sub.-- segment 1124 shows its lower level subnet exploded as 10baset.sub.-- network 1180. 10baset.sub.-- network 1180 represents a physical.sub.-- network layer of a typical link.sub.-- network which is using twisted pair transmission devices to exchange data. 10baset.sub.-- network 1180 comprises 10baset.sub.-- nodes 1130 and 1132 which contain 10baset.sub.-- ifs (interfaces) 1134 and 1136, respectively. Each 10baset.sub.-- node 1130 and 1132 is connected, through 10baset.sub.-- ifs 1134 and 1136, respectively, to 10baset.sub.-- hub 1142 via 10baset.sub.-- segments 1138 and 1140, respectively. Each 10baset.sub.-- segment 1138 and 1140 comprises a lower level media.sub.-- network. 10baset.sub.-- segment 1138 shows its lower level subnet exploded as tp.sub.-- network 1190. Tp.sub.-- network 1190 represents a media.sub.-- network layer of a typical 10baset.sub.-- network using RJ-45 twisted pair wiring medium to connect the physical entities of a network. Tp.sub.-- network 1190 comprises RJ-45.sub.-- jacks 1144 and 1146. Each RJ-45.sub.-- jack 1144 and 1146 is connected to tp.sub.-- block 1152 via tp.sub.-- cables 1148 and 1150, respectively. The other ip.sub.-- subnet 1112 would also contain a lower order logical.sub.-- network, though not necessarily an 802.3 network. The break down of lower order network and their dependencies for this other ip subnet 1112 would depend on the type of lower order networks it contains. One of the two link.sub.-- segments, namely 1124, depends on a 10baseT physical network. As above, only one of the link.sub.-- segments is exploded, and the other link.sub.-- segment, namely 1126, may or may not be a 10baseT physical network (it might be ThinLAN, or even ThickLAN). Finally, one of the 10baseT segments is shown to depend on a twisted-pair network, derived from media.sub.-- network. Again, the other segment may or may not be the same type of media (and would not be, in fact, if the other logical.sub.-- segment at the 802.3 level depended on a ThinLAN or ThickLAN physical network). In the tp.sub.-- network, we have chosen (primarily for the purposes of illustration) to model the RJ-45.sub.-- jacks on the interface card as media.sub.-- connectors, the tp.sub.-- cables as media.sub.-- cables, and a punch-down tp.sub.-- block as a media.sub.-- connector. This example shows but one way the object models described above can model such a network topology. The table below describes the resource aspect types and the associations formed between instances of those resource aspect types. These exemplary RATs and associations are usable to model various computing network topologies.
__________________________________________________________________________
Resource-aspect
Rules
Type (RAT) Role Min
Max
Associated RAT
__________________________________________________________________________
logical.sub.-- network
network 0 1 logical.sub.-- network.sub.-- containment
network 0 1 logical.sub.-- segment.sub.-- containment
logical.sub.-- network.sub.-- containment
container
0 1 logical.sub.-- network
container
0 N logical.sub.-- segment
logical.sub.-- segment.sub.-- containment
container
0 1 logical.sub.-- segment
container
0 N logical.sub.-- network
logical.sub.-- node
logical.sub.-- device
0 1 logical.sub.-- node.sub.-- containment
logical.sub.-- node.sub.-- containment
container
0 1 logical.sub.-- node
container
0 N logical.sub.-- if
logical.sub.-- if
interface
0 1 logical.sub.-- node.sub.-- containment
interface
0 1 logical.sub.-- interface.sub.-- connection
logical.sub.-- interface.sub.-- connection
connector
0 1 logical.sub.-- if
connector
0 1 logical.sub.-- segment
logical.sub.-- segment
segment 0 N logical.sub.-- interface.sub.-- connection
segment 0 1 logical.sub.-- boundary
segment 0 1 logical.sub.-- network.sub.-- containment
segment 0 1 logical.sub.-- segment.sub.-- containment
segment 0 1 physical.sub.-- network
logical.sub.-- boundary
bounds 0 N logcal.sub.-- segment
bounds 0 N logical.sub.-- connector (inherited)
logical.sub.-- connector
connection device
0 1 logical.sub.-- boundary
physical.sub.-- network
phy.sub.-- network
0 1 logical.sub.-- segment
phy.sub.-- network
0 1 physical.sub.-- segment.sub.-- containment
physical.sub.-- segment.sub.-- containment
container
0 1 physical.sub.-- network
container
0 N physical.sub.-- segment
physical.sub.-- node
chasis 0 1 physical.sub.-- node.sub.-- containment
physical.sub.-- node.sub.-- containment
container
0 N physical.sub.-- if
container
0 1 physical.sub.-- node
physical.sub.-- if
interface
0 1 physical.sub.-- node.sub.-- containment
interface
0 1 physical.sub.-- interface.sub.-- connection
physical.sub.-- interface.sub.-- connection
connector
0 1 physical.sub.-- if
connector
0 1 physical.sub.-- segment
physical.sub.-- segment
segment 0 N physical.sub.-- interface.sub.-- connection
segment 0 1 physical.sub.-- boundary
segment 0 1 physical.sub.-- segment.sub.-- containment
segment 0 1 media.sub.-- containment
physical.sub.-- boundary
bounds 0 N physical.sub.-- segment
bounds 0 N physical.sub.-- connector (inherted)
physical.sub.-- connector
bounds 0 1 physical.sub.-- boundary
media.sub.-- containment
attachment
0 1 physical.sub.-- segment
container
0 1 media.sub.-- network
media.sub.-- network
media.sub.-- network
0 1 media.sub.-- containment
media.sub.-- container
0 N media.sub.-- cable
media.sub.-- terminator
termination
0 1 media.sub.-- cable
media.sub.-- cable
physical wire
0 1 media.sub.-- terminator
physical wire
0 1 media.sub.-- fitting
physical wire
0 2 media.sub.-- connector
physical wire
0 1 media.sub.-- network
media.sub.-- fitting
cable link
0 1 media cable
media.sub.-- connector
connector
0 1 media.sub.-- cable
__________________________________________________________________________
TOPOLOGY MANAGEMENT METHODS API FUNCTIONS: GENERAL The present invention comprises the data constructs described above and related methods for manipulating the data constructs. The methods of the present invention are invoked by application programs to manage topologies related to the application program. An application program invokes the methods by calling an appropriate function within the API. Resources 200 of FIG. 2 are managed indirectly through reference to the resource aspects 202 (RAs) which comprise the resource, to the resource aspect types 212 (RATs), and associations 204. Functions described below directly manipulate these data constructs. Indirect side effects of these manipulations alter the definition of resources (200) in a topology. Each function of the API of the present invention is described below in a common format which discloses the operation of each API function. Most functions discussed below operate according to the generalized flowcharts shown in FIG. 7. The flowcharts of FIG. 7 depict the operations of "add", "delete", "update", and "query" relating to an entity to be explicitly manipulated by the related API function. In the context of flowcharts of FIG. 7, entity stands for the data construct being explicitly manipulated by the API function. The "add entity" operation of FIG. 7 begins at element 700. Element 702 and 704 operate to verify the parameters provided to the function as input. Element 702 represents the processing of the present method which verifies the parameters passed in to the specific API "add entity" function. If the parameters indicate an unexpected or inconsistent request or value, element 704 operates to transfer processing of the method to element 744 to thereby complete processing of the function and return an error indication to the calling application program. If the parameters are valid, processing continues with element 706 to verify that the entity to be added is not already known to the topology management service API. If the entity to be added is already known to the system, processing is transferred to element 744 to thereby complete processing of the function and return an error indication to the calling application program. If the entity to be added is not yet known to the API system, processing continue at element 708 to verify the addition of the entity against all topology rules known to the topology service API. If element 710 determines that the addition of the entity violates any currently known topology rules, processing transfers to element 744 to thereby complete processing of the function and return an error indication to the calling application program. If the addition of the entity does not violate any rules known to the topology management service API, processing continues with element 712. Element 712 operates to prepare all necessary changes to the permanent storage of the API information base stored on disk 114 of FIG. 1. Processing continues with element 740 to commit all previously prepared modifications to the permanent storage of the information base on disk 114 of FIG. 1. The preparation and commitment of the modifications is separated into two elements to permit logging and reversal of changes to the permanently stored information base. All changes prepared for a particular addition, deletion, or update to the permanently stored information base are committed to storage as a single transaction so as to simplify the processing required to "undo" or reverse a particular update. In addition, element 740 operates to activate any notification receivers (described above) which are associated with any trigger conditions activated by the prepared changes to the information base. Element 740 is also responsible for evaluating the modified topology and adjusting the resource integration as appropriate for the committed changes. The methods applied for resource integration are discussed in additional detail below. Processing of the add entity operation completes with element 742 which returns a successful status to the application program which invoked the add entity API function. Typically a "handle" is returned to the caller upon successful completion of the add entity operation. The handle is used by the calling application program to identify the data construct just created in future calls to API functions which delete or update the data constructs. "Delete entity" and "update entity" operations are processed similarly as depicted in the flowcharts of FIG. 7. A delete entity function is invoked by the application program to remove an identified, previously stored, data construct while an update entity modifies or supplements information previously recorded regarding an identified data construct. The data construct to be deleted or modified is provided by the calling application program as a parameter to the delete entity or update entity API function. The delete entity API function begins at element 714 and the update entity API function begins at element 726. As depicted in the flowcharts of FIG. 7, both functions proceed along a common path of processing. The data construct to be deleted or updated, as identified by the calling application program, is located by operation of element 716. If the entity to be located is not found in the permanent information base on disk 114 of FIG. 1, then element 718 transfers processing of the method to element 746 wherein an error status is returned to the caller and processing of the method is completed. If the identified data construct is located on disk 114 of FIG. 1, then processing continues with element 720. Element 720 and 722 combine to determine whether the requested deletion or modification adheres to all rules of the affected topologies. The rules and related enforcers are discussed in detail above. If the requested modifications fail to adhere to the rules of the affected topologies, then processing is transferred to element 746 wherein an error status is returned to the caller and processing of the method is completed. If the requested modifications are permissible under the defined rules of the topologies, then processing continues with element 724. Element 724 operates as does element 712 discussed above to prepare the requested changes to the permanent information base on disk 115 of FIG. 1. Processing then continues with element 740 and 742, as discussed above, to commit the requested changes to the permanent storage, to notify any notification receivers, and to re-evaluate the resource integration of the affected topologies in the permanent storage on disk 114. The flowcharts of FIG. 7 also depict the processing of a typical query request of the API topology management service. In a query request, the calling application program identifies a data construct for which information is requested, and identifies the type of information required. The processing of the query function returns a failure status to the calling program if the identified data construct is not located or returns a successful status plus the requested information if the identified data construct is located. Processing of a query function begins at element 728. Element 730 and 732 combine to locate the data construct identified by the calling program. If the identified data construct is not located in the permanent information base stored on disk 114 of FIG. 1, then processing continues with element 738 to return a "not found" status to the calling program. If the identified data construct is located, then processing continues with element 734 which retrieves the requested information from the permanent information store on disk 114 and prepares the information as appropriate for return to the calling program. Element 736 then operates to return a successful status indication to the calling program and returns the requested information as appropriate. The flowcharts of FIG. 7 are intended only as general guidelines to aid in the understanding of the processing of several of the API functions listed and discussed below. Each API function discussed below includes a detailed description of its processing as applied to the data constructs discussed above. API FUNCTIONS: RESOURCE INTEGRATION As discussed above with respect to the processing of element 740 of FIG. 7, any change to the information base representing the topologies managed by the present invention causes the re-evaluation of the resource integration (as discussed above with reference to FIGS. 3-6). Some API functions directly affect the resource integration feature of the present invention. For example, API functions discussed below which supply an object to the topology service for topological management or to unmanage a previously managed object can directly affect the resource integration of the topologies affected. When an object is initially supplied to the topology management service API, the resource integration is evaluated to determine whether the new object's addition to the topology causes the integration of previously distinct resources. The flowchart of FIG. 8 represents the processing which re-evaluates resource integration following the provision of an object to be managed by the topology management service API. Processing in FIG. 8 begins at element 800 when an object is provided to the API to be managed under the topological management service of the present invention. Element 800 is operable to determine whether the newly managed object specifies resource names (RNs) which identify an already known resource. If not, then processing continue with element 802 to create a new resource uniquely identified by the resource names supplied in the newly managed object. The new resource is said to be represented by the newly managed object. Processing of the method is then complete and element 812 returns control to the caller of the resource integration function. If the supplied, newly managed object does identify existing resources, then processing of element 804 determines whether it identifies one resource or multiple resources. If only one resource is identified by the newly managed objects, processing continues with element 806 wherein any resource names specified by the newly managed objects which were not previously known in the identified resource are added to the resource. In this manner, resources are said to grow by the possible addition of resource names which further identify the resource. Processing of the method is then complete and element 812 returns control to the caller of the resource integration function. If the newly managed object identifies more than one resource, processing continues with element 808 and 810. Elements 808 and 810 operate to combine the identified resources into a new resource which is identified by the union of resource names of all objects representing the plurality of identified resources. The new resource is represented by the union of all objects (resource aspects--RAs) which previously represented the plurality of identified resources. The originally identified plurality of resources are then destroyed by operation of element 810 having been replaced by the new resource. Processing of the method is then complete and element 812 returns control to the caller of the resource integration function. When an object is removed from the topology management service API, the resource integration is evaluated to determine whether the object's removal causes the disintegration of previously integrated resources. The flowchart of FIG. 9 represents the processing which re-evaluates resource integration following the removal of an object from the topology management service API. Processing in FIG. 9 begins at element 900 when an object is removed from the topological management service API of the present invention. The object to be removed contains resource names (RNs) which serve to identify a particular resource. Element 900 is operable to determine whether the identified resource is represented by other objects still managed under the topological management service API of the present invention. If the resource is no longer represented by any object under the API, then processing continue with element 902 to destroy the resource by removing it from the information base stored on disk 1 14. The resource is no longer known by the API topology management service since it is not represented by any object under the management service. Processing then continues with element 912, the complete processing of the method, and to return control to the calling function. If the identified resource is still represented by one or more objects under the management of the topology management service API, then processing continues with element 904 to determines whether removal of the specified object changes the closure set of the identified resource. In other words, do the remaining objects which represent the resource still share at least one resource name (RN) with at least one other object which also represents the identified resource? If the resource name closure set is not changed, other than the removal of the specified object, then processing continues with element 910 to remove the resource names from the resource which are unique to the object specified to be removed. In this manner the resource is said to shrink by removal of resource names which previously were used to uniquely identify the resource. Processing then continues with element 912, the complete processing of the method, and to return control to the calling function. If the processing of element 904 determines that the resource name closure set of the resource has changed, then processing continues with element 906 and 908 to split the identified resource into multiple new resources. Each new resource is represented by a resource name closure set of resource aspects (RAs) which previously were in the resource name closure set of the identified resource. Element 908 then continues processing by deleting the originally identified resource from the topology management service API permanent store on disk 114 of FIG. 1. The originally identified resource is no longer represented by any objects managed by the topology management service API. Processing then continues with element 912, the complete processing of the method, and to return control to the calling function. Graphical examples of the operation of the resource integration methods of FIG. 8 and FIG. 9 are discussed above with respect to FIGS. 3-6. In addition, it will be noted that similar resource integration methods are utilized in conjunction with other methods (such as those generally described by the flowcharts of FIG. 7). The methods of FIG. 7 may, for example, change the set of resource names associate with a managed object, either adding or deleting resource names. Changes in the resource names stored in a managed object necessitate invocation of resource integration methods similar to those of FIGS. 8 and 9 without actually adding or removing an object from the topology management service API. Such modifications to the methods of FIGS. 8 and 9 will be readily apparent to those of ordinary skill in the computing arts. API FUNCTIONS: DETAILED DESCRIPTIONS The following descriptions provide details of the operation of each of the API functions available to the application programmer using the topology management service API of the present invention. The format of each description is as follows:
______________________________________
FUNCTION TITLE -
Descriptive name of the function.
INTRODUCTION -
Introductory commentary (if any) where
necessary to describe the purpose of the function.
INPUTS - General description of parameters supplied by the
calling application program.
PROCESSING -
Overview of the processing performed by the
function.
OUTPUT - General description of the output produced by the
operation of the function.
______________________________________
MANAGING RESOURCE ASPECT TYPES This section describes the functions for managing resource aspect types (RATs). The functions include: adding a new resource aspect type. This may be a specialization of one or more existing resource aspect types. removing an existing resource aspect type. Add a resource aspect type Introduction Resource aspect types are named and can be specializations of one or more existing resource aspect types. Inputs A request to add a resource aspect type--specifying: name of the resource aspect type a list of more general resource aspect types to specialize from (optional) Processing The function rejects a request to add a resource aspect type and generates an error if: the resource aspect type name is already known to the API a more general resource aspect type is specified in the request but it does not exist If the function accepts a request to add a resource aspect type, the function updates the resource aspect type store and returns the resource aspect type. Outputs updated resource aspect type store resource aspect type error Delete a resources aspect type Inputs A request to delete a resource aspect type--specifying: resource aspect type Processing The function rejects a request to delete a resource aspect type if: the resource aspect type does not exist an instance of the resource aspect type exists and that resource aspect is managed by the topology service the resource aspect type is a generalization of some other valid resource aspect type If the function accepts a request to delete a resource aspect type, the function removes the resource aspect type form the resource aspect type store. If the function rejects a request to delete a resource aspect type, the function generates an error. Outputs updated resource aspect type store error Define the resource aspect rules for a resource aspect type The developer can define rules for a resource aspect type. These specify the number and type of associations that a resource aspect of a given type must participate in. As one or more resource aspects represent a resource, one or more resource aspect rules describe the associations that a resource can participate in. A resource aspect whose resource aspect type is a specialization of a more general type must be a valid example of both the specialized type and the more general type. Resource aspect rules specified for the specialized resource aspect type therefore cannot overwrite rules specified for the more general type, instead they must be applied in addition to the more general rules. Any resource aspect type will have a list of valid resource roles. For example: a "power connection" resource aspect type may have a "generator" resource role and a "consumer" resource role. a "computer" resource aspect type may have a "power consumer" resource role and a "contains extension card" resource role "ownership" resource aspect type may have a "owner" resource role and a "owned" resource role. Each resource aspect rule includes a resource role. When the same resource role is used in a rule for one resource aspect type (say T) and also for another resource aspect type (say T'), if T' is a specialization of T then both rules apply to instances of type T'. Inputs A request to define the resource aspect rules for a resource aspect type--specifying: resource aspect type a list of resource aspect rules, a resource aspect rule consists of {resource role, resource aspect type, minimum cardinality, maximum cardinality, error} tuples Outputs updated resource aspect type store error Operations of resource aspect rules Introduction Resource aspect rules express configurable invariants of a resource aspect type. They specify: what resource roles apply to the resource aspect type the number and types of associations that a resource of this resource aspect type must participate in the details of how specialization of resource aspect types affects resource aspect rules. The way that the API allows the developer to specify configurable topology invariants using resource aspect rules provides direct support for the concept of resource aspect type specialization. In this context specialization of resource aspect types means that a particular resource aspect must be a valid representative of not just its resource aspect type but also all the generalizations of this type. This means that when the developer recognizes the inheritance relations between the resource aspect types that he uses to model his particular problem domain, the API allows the invariants to be expressed in a way that naturally reflects these inheritance relations. The API does this by taking the definitions of resource aspect rules that apply to a particular resource aspect type as only defining the additional rules for that resource aspect type. The rules defined for all generalizations of that resource aspect type do not need to be repeated but also apply. For example, assume there is a resource aspect type X with the following resource aspect type rules: X supports resource role A according to rule R (where R expresses the resource aspect type and cardinality constraints) X supports resource role B according to rule S X supports resource role C according to rule T Further, assume that resource aspect type X does not inherit from any other resource aspect type. Resource of type X can only participate in associations as follows: all associations must involve the resource in one of the resource roles A, B or C associations where the resource is in resource role A must comply with rule R associations where the resource is in resource role B must comply with rule S associations where the resource is in resource role C must comply with rule T Continuing from the previous example, this example demonstrates the use of specialization in resource aspect type definitions. Also assume there is a resource aspect type X' that is a specialization of X with the following resource aspect rules: X' supports resource role B according to rule U X' supports resource role C according to rule V X' supports resource role D according to rule W Resources of type X' can participate in associations as follows: all associations must involve the resource in one of the resource roles A, B, C or D associations where the resource is in resource role A must comply with rule R associations where the resource is in resource role B must comply with both rules S and U associations where the resource is in resource role C must comply with both rules T and V associations where the resource is in resource role D must comply with rule W Input resource aspect type store resource R Processing A resource R is valid if all the resource aspects that represent it are valid according to the following requirement. A resource aspect of resource aspect type T is valid according to the resource aspect rules if the following are both true: the resource aspect only has associations where it is in the resource roles that are either specified for the resource aspect type T or specified for a more generalized resource aspect type each resource aspect associated with R has a resource aspect type T that conforms with all specifications for the relevant resource role for the resource aspect type T and for all generalizations of T the resource aspect is involved in the number of associations for each resource role that conforms with all specifications for the relevant resource role for the resource aspect type T and for all generalizations of T If a request made to the function is rejected as a result of a resource aspect rule, then the error associated with the resource aspect rule is returned and the associated resource aspect (that would have become invalid) is also returned. Output error resource aspect associated with error Define enforcers for a resource aspect type Introduction A topology enforcer is an object that supports an interface that implements a validity checker. The validity checker returns true or false when given a resource aspect of the specified type (including sub-type) to check. The API enforcers allow the developer to specify constraints that can' t be expressed using the resource aspect rules. For example, assume a developer has defined resource aspect types "computer", "modem" and "provides dial-up services". Assume that a resource of type "provides dial-up services" must have one association with a "computer" and one with a "modem". These constraints are expressible using resource aspect rules. Consider now the constraint that any associations between "computers" and "provides dial-up services" and between "modems" and "provides dial-up services" cannot be formed unless the baud rate is the same for the "computer" and for the "modem". This constraint cannot be expressed (given the particular way that the developer has modelled this problem) using resource aspect rules and therefore requires an enforcer. The API enforcers constrain all resource aspects of a specified resource aspect type (and specializations of it). Associated with each API enforcer is a trigger condition. The trigger condition specifies the conditions under which the API will invoke the enforcer. Trigger conditions include changes to topological and non-topological characteristics. Trigger conditions can only be "local" changes. By "local" it is meant that an API enforcer for a resource aspect type (say T) will only be invoked for changes to a resource having resource aspect type T or for changes to a resource that is directly associated with a resource having resource aspect type T. Inputs A request to define the API enforcers for a resource aspect type--specifying: resource aspect type (say T) a list of API enforcers each with an associated trigger condition, that is one or more of the following: 1) an association is formed that involves a resource aspect of type T 2) an association is deleted that involves a resource aspect of type T 3) a (non-topological) state change occurred to a resource aspect of type T 4) a resource aspect formerly of type T changes resource aspect type 5) an association is formed that involves a resource represented by a resource aspect of type T 6) an association is deleted that involves a resource represented by a resource aspect of type T 7) a (non-topological) state change occurred to some resource aspect that represents a resource also represented by a resource aspect of type T 8) some resource aspect, that represents a resource also represented by a resource aspect of type T, changes resource aspect type 9) as in 1 to 8 above except that the change occurred to an associate of a resource aspect of type T 10) as in 1 to 8 above except the change occurred to an associate of a resource as | ||||||
