U.S. patent application number 10/369970 was filed with the patent office on 2004-05-06 for system and method for managing configuration information for dispersed computing systems.
Invention is credited to Arnott, Michael, Ashley, Mark J., Shepherd, George C., Vo, Truyen.
Application Number | 20040088142 10/369970 |
Document ID | / |
Family ID | 32175944 |
Filed Date | 2004-05-06 |
United States Patent
Application |
20040088142 |
Kind Code |
A1 |
Ashley, Mark J. ; et
al. |
May 6, 2004 |
System and method for managing configuration information for
dispersed computing systems
Abstract
A customer configuration server may provide access to
configuration data for multiple computer systems and organize the
configuration data for the computer systems within a hierarchy of
logical groups. Logical groups may correspond to geographic
locations, customers, and individual computer systems. For example,
configuration data for several computer systems may be logically
grouped by customer, and configuration data for several customers
may be logically grouped by geographic location. The configuration
data may be available from a variety of different data sources and
accessible via a single software application. Such a software
application may also provide an interface to various common
functions, allowing those functions to be applied to any of the
computer systems' configuration data.
Inventors: |
Ashley, Mark J.; (Sydney,
AU) ; Arnott, Michael; (Springwood, AU) ;
Shepherd, George C.; (Meylan, FR) ; Vo, Truyen;
(Liverpool, AU) |
Correspondence
Address: |
Robert C. Kowert
Meyertons, Hood, Kivlin, Kowert & Goetzel, P.C.
P.O. Box 398
Austin
TX
78767
US
|
Family ID: |
32175944 |
Appl. No.: |
10/369970 |
Filed: |
February 19, 2003 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10369970 |
Feb 19, 2003 |
|
|
|
10288682 |
Nov 5, 2002 |
|
|
|
Current U.S.
Class: |
702/184 |
Current CPC
Class: |
H04L 41/0253 20130101;
H04L 41/0681 20130101; H04L 41/06 20130101 |
Class at
Publication: |
702/184 |
International
Class: |
G06F 015/00 |
Claims
What is claimed is:
1. A system, comprising: a processor; and a memory coupled to the
processor and configured to store program instructions executable
by the processor to: receive system configuration data for each of
a plurality of computer systems; organize the system configuration
data within a hierarchy of logical groupings; access the system
configuration data included in a specified portion of the hierarchy
in response to a request specifying the specified portion of the
hierarchy; perform a function identified in the request on the
system configuration data included in the specified portion of the
hierarchy.
2. The system of claim 1, wherein the request is a search request,
wherein the specified portion of the hierarchy is all of the
hierarchy, and wherein the program instructions are executable to
search the system configuration data and to display search
results.
3. The system of claim 1, wherein the request is a report request,
wherein the specified portion of the hierarchy is one of the
plurality of computer systems, and wherein the program instructions
are executable to process a portion of the system configuration
data associated with the one of the plurality of computer systems
in order to generate a report.
4. The system of claim 3, wherein the program instructions are
executable to process data identifying components currently
included in the one of the plurality of computer systems, to detect
one or more components included in the one of the plurality of
computer systems that are below a minimum acceptable revision, and
to identify the one or more components in the report.
5. The system of claim 1, wherein the request is an automated task
request, and wherein the program instructions are further
executable to automatically process the system configuration data
included in the specified portion of the hierarchy in response to a
trigger condition specified in the automated task request.
6. The system of claim 1, wherein the program instructions are
executable to organize the system configuration data within the
hierarchy by storing a received portion of the system configuration
data associated with one of the plurality of computer systems in a
directory associated with the one of the plurality of computer
systems.
7. The system of claim 1, wherein the program instructions are
executable to access system configuration data from a plurality of
data sources, wherein at least one of the plurality of data sources
is a database.
8. The system of claim 1, wherein the program instructions are
executable to display one or more menu options corresponding to a
level of the hierarchy, wherein in response to a user selecting one
of the one or more menu options, the program instructions are
executable to display one or more menu options corresponding to a
different level of the hierarchy.
9. The system of claim 1, wherein the program instructions are
executable to build a patch bundle in response to the request if
the request is a request for a plurality of software patches.
10. The system of claim 1, wherein the system configuration data
associated with one of the plurality of computer systems includes
FRU (Field Replaceable Unit) list identifying which FRUs are
currently included in the one of the plurality of computer
systems.
11. The system of claim 10, wherein the program instructions are
executable to generate the FRU list by querying a database for
information identifying FRUs included in the one of the plurality
of computer systems.
12. The system of claim 10, wherein the program instructions are
executable to automatically generate the FRU list in response to
receiving data corresponding to the one of the plurality of
computer systems.
13. The system of claim 1, wherein the system configuration data
associated with one of the plurality of computer systems includes
one or more image objects, wherein the program instructions are
executable to display the one or more image objects on a web
browser.
14. The system of claim 1, wherein the system configuration data
associated with one of the plurality of computer systems includes a
plurality of reports generated from other portions of the system
configuration data associated with the one of the plurality of
computer systems.
15. The system of claim 14, wherein the program instructions are
executable to generate the plurality of reports from other portions
of the system configuration data associated with the one of the
plurality of computer systems by calling one or more software
processes external to the program instructions.
16. The system of claim 1, wherein the program instructions are
executable to perform data mining on the system configuration data
associated with the plurality of computer systems.
17. The system of claim 1, wherein the hierarchy of logical
groupings includes a plurality of computer system groupings.
18. The system of claim 17, wherein the hierarchy of logical
groupings includes a plurality of customer groupings, wherein each
customer grouping includes at least one of the computer system
groupings.
19. The system of claim 18, wherein the hierarchy of logical
groupings includes a plurality of geographic location groupings,
wherein each geographic location grouping includes at least one of
the customer groupings.
20. The system of claim 1, wherein the program instructions
implement a customer configuration server, wherein the processor
and the memory are comprised in one computer system configured to
execute an instance of the customer configuration server; wherein
the system further comprises an other customer configuration server
comprising a processor and a memory and configured to execute an
other instance of the customer configuration server.
21. The system of claim 20, wherein the instance of the customer
configuration server is configured to respond to requests targeting
the system configuration data included in one portion of the
hierarchy and wherein the other instance of the customer
configuration server is configured to respond to requests targeting
the system configuration data included in an other portion of the
hierarchy; wherein if the one instance of the customer
configuration server receives a request targeting the system
configuration data included in the other portion of the hierarchy,
the one instance is configured to transfer the request to the other
instance of the customer configuration server.
22. A method, comprising: receiving system configuration data for
each of a plurality of computer systems; organizing the system
configuration data within a hierarchy; accessing the system
configuration data included in a specified portion of the hierarchy
in response to a request specifying the specified portion of the
hierarchy; performing a function identified in the request on the
system configuration data included in the specified portion of the
hierarchy.
23. The method of claim 22, wherein the request is a search
request, wherein the specified portion of the hierarchy is all of
the hierarchy, and wherein said performing the function comprises
searching the system configuration data and displaying search
results.
24. The method of claim 22, wherein the request is a report
request, wherein the specified portion of the hierarchy includes
one or more of the plurality of computer systems, and wherein said
performing comprises processing a portion of the system
configuration data associated with the one or more of the plurality
of computer systems in order to generate a report.
25. The method of claim 24, wherein said performing comprises:
processing data identifying components currently included in the
one of the plurality of computer systems, detecting one or more
components included in the one of the plurality of computer systems
that are below a minimum acceptable revision, and identifying the
one or more components in the report.
26. The method of claim 22, wherein the request is an automated
task request, and wherein the method further comprises
automatically processing the system configuration data included in
the specified portion of the hierarchy in response to a trigger
condition specified in the automated task request.
27. The method of claim 26, wherein the automated task request
specifies a recurring trigger condition, and wherein the method
further comprises automatically processing the system configuration
data included in the specified portion of the hierarchy each time
the recurring trigger condition occurs.
28. The method of claim 22, wherein said organizing the system
configuration data within the hierarchy comprises storing a
received portion of the system configuration data associated with
one of the plurality of computer systems in a directory associated
with the one of the plurality of computer systems.
29. The method of claim 22, further comprising accessing system
configuration data from a plurality of data sources, wherein at
least one of the plurality of data sources is a database.
30. The method of claim 22, further comprising displaying one or
more menu options corresponding to a level of the hierarchy and, in
response to a user selecting one of the one or more menu options,
responsively displaying one or more menu options corresponding to a
different level of the hierarchy.
31. The method of claim 22, wherein said performing comprises
building a patch bundle in response to the request if the request
is a request for a plurality of software patches.
32. The method of claim 22, wherein the system configuration data
associated with one of the plurality of computer systems includes
FRU (Field Replaceable Unit) list identifying which FRUs are
currently included in the one of the plurality of computer
systems.
33. The method of claim 32, further comprising generating the FRU
list by querying a database for information identifying FRUs
included in the one of the plurality of computer systems.
34. The method of claim 32, further comprising automatically
generating the FRU list in response to receiving data identifying
components included in the one of the plurality of computer
systems.
35. The method of claim 22, wherein the system configuration data
associated with one of the plurality of computer systems includes
one or more image objects; the method further comprising displaying
the one or more image objects on a web browser.
36. The method of claim 22, wherein the system configuration data
associated with one or more of the plurality of computer systems
includes a plurality of reports generated from other portions of
the system configuration data associated with the one or more of
the plurality of computer systems.
37. The method of claim 36, further comprising generating the
plurality of reports from other portions of the system
configuration data associated with the one or more of the plurality
of computer systems by initiating one or more software
processes.
38. The method of claim 22, further comprising performing data
mining on the system configuration data associated with the
plurality of computer systems.
39. A method, comprising: requesting configuration data for a
computer system included in a plurality of computer systems from a
customer configuration server that organizes configuration data for
the plurality of computer systems according to a hierarchy of
logical groups; in response to said requesting, the customer
configuration server displaying a plurality of options identifying
data objects included in the logical group of system configuration
data associated with the computer system; selecting one of the
plurality of options; in response to said selecting, the customer
configuration server accessing a corresponding data object; and
repeating said requesting, said displaying, said selecting, and
said accessing for a different computer system.
40. The method of claim 39, further comprising providing a new
configuration data object to the customer configuration server and
the customer configuration server organizing the new configuration
data within the hierarchy of logical groups.
41. The method of claim 40, wherein said organizing comprises
organizing the new configuration data object in a logical grouping
associated with a geographic location, wherein a plurality of
logical groupings included in one level of the hierarchy are each
associated with a respective geographic location.
42. The method of claim 40, wherein said organizing comprises
organizing the new configuration data object in a logical grouping
associated with a customer, wherein one level of the hierarchy
includes a plurality of logical groupings that are each associated
with a respective customer.
43. The method of claim 40, wherein said organizing comprises
organizing the new configuration data object in a logical grouping
associated with a business type, wherein one level of the hierarchy
includes a plurality of logical groupings that are each associated
with a respective business type.
44. The method of claim 40, wherein said organizing comprises
navigating a directory tree, wherein each directory included in the
directory tree corresponds to a respective logical grouping within
the hierarchy.
45. The method of claim 39, wherein one level of the hierarchy
includes a plurality of logical groupings that are each associated
with a respective computer system.
46. The method of claim 39, wherein said displaying comprises
displaying the plurality of options via a web browser.
47. The method of claim 46, wherein at least one of the plurality
of options corresponds to a group of data objects.
48. The method of claim 39, further comprising the customer
configuration server providing a plurality of additional options,
wherein each of the additional options corresponds to a respective
function.
49. The method of claim 48, wherein said selecting comprises
selecting one of the additional options, and wherein said accessing
comprises the customer configuration server performing a selected
function on the corresponding data object.
50. The method of claim 39, wherein said accessing comprises the
customer configuration server querying a database for the
corresponding data object.
51. The method of claim 39, further comprising the customer
configuration server displaying the corresponding data object via a
web browser.
52. The method of claim 39, wherein said displaying comprises
displaying a multilingual interface.
53. The method of claim 39, further comprising one instance of the
customer configuration server transferring a request for access to
the system configuration data to an other instance of the customer
configuration server if the other instance of the customer
configuration server is better suited to respond to the request.
Description
1. CROSS REFERENCE TO RELATED APPLICATION
[0001] This invention is a continuation-in-part of U.S. patent
application Ser. No. 10/288,682, titled "Automatically Identifying
Replacement Times for Limited Lifetime Components" filed Nov. 5,
2002.
BACKGROUND OF THE INVENTION
[0002] 2. Field of the Invention
[0003] This invention relates to computer systems and, more
particularly, to maintaining data identifying components included
in computer systems.
[0004] 3. Description of the Related Art
[0005] With the growing deployment of computer systems and
software, users often expect systems to operate without system
downtime. Suppliers of computer systems are pressured by customers
to provide quick resolution of problems. For example, a particular
device of a computer system provided by a supplier may fail,
causing system downtime. The customer may pressure the supplier to
quickly replace the device in order to minimize downtime. Service
personnel, on-site field staff, field engineers, or other resources
dedicated to servicing computer systems for customers must quickly
identify and solve problems to ensure customer satisfaction.
[0006] Service personnel may confront several challenges when
attempting to quickly resolve customer problems. Service personnel
may need access to accurate data in order to actually solve the
problem. For example, a storage device in a computer system may
fail and although service staff knows the storage device must be
replaced, the service staff may not know the type of storage device
required for the specific configuration of the system. Resolution
of the problem may be delayed as the service staff obtains
replacement information for the storage device. Furthermore, exact
configuration information for a particular system may not be
up-to-date or may be difficult to access. Thus, resolution of the
problem may be further delayed.
[0007] In an effort to ensure downtime is minimized, service
personnel may attempt to contain a problem before the problem
becomes apparent within several computer systems. A supplier may
become aware of a problem with a particular device that has been
distributed to thousands of customers as part of computer systems.
The service personnel may want to recall the particular device and
replace the device with an upgraded device. The service personnel
may recommend upgrading the particular device or performing
preventative repair to ensure the device operates as expected. In
such scenarios, the service personnel may need to quickly obtain
customer configuration information for customers located in
different geographical locations in order to determine which
customers currently have the device. Containment of the problem may
be delayed or even impossible if the service personnel do not have
access to customer configuration information.
[0008] As the above examples show, obtaining access to appropriate
configuration information for customer systems is one of the
challenges faced by service personnel when attempting to quickly
resolve customer problems.
SUMMARY
[0009] Various embodiments of systems and methods may provide
access to configuration data for multiple computer systems and
organize the configuration data for the computer systems within a
hierarchy of logical groups. Logical groups may correspond to
geographic locations, customers, and individual computer systems.
For example, configuration data for several computer systems may be
logically grouped by customer, and configuration data for several
customers may be logically grouped by geographic location. The
configuration data may be available from a variety of different
data sources and accessible via a single software application. Such
a software application may also provide an interface to various
common functions, allowing those functions to be applied to any of
the computer systems' configuration data.
[0010] In one embodiment, a system may include a processor and a
memory configured to store program instructions executable by the
processor to: receive system configuration data for each of a
plurality of computer systems; organize the system configuration
data within a hierarchy; access the system configuration data
included in a specified portion of the hierarchy in response to a
request specifying the specified portion of the hierarchy; and
perform a function identified in the request on the system
configuration data included in the specified portion of the
hierarchy. For example, the program instructions may be executable
to process a portion of the system configuration data associated
with the one of the computer systems in order to generate a report.
Such a report may be generated by processing data identifying
hardware and software components currently included in that
computer system, detecting one or more components included in that
computer system that are below a minimum acceptable revision, and
identifying those components in the report. The program
instructions may be executable to generate reports from or
otherwise process configuration data for any of the plurality of
computer systems.
[0011] One embodiment of a method may involve: requesting
configuration data for a computer system from a customer
configuration server that organizes configuration data for several
computer systems according to a hierarchy of logical groups; the
customer configuration server displaying options identifying data
objects included in the logical group of system configuration data
associated with the computer system; selecting one of the options;
and the customer configuration server accessing a corresponding
data object.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] A better understanding of the present invention can be
obtained when the following detailed description is considered in
conjunction with the following drawings, in which:
[0013] FIG. 1 illustrates a computer system suitable for
implementing various embodiments of a customer configuration
server.
[0014] FIG. 2 illustrates an organizational hierarchy that a
customer configuration server may use to organize system
configuration data in one embodiment.
[0015] FIG. 3 illustrates how one embodiment of a customer
configuration server may receive explorer data output from an
explorer mechanism on each of several computer systems.
[0016] FIG. 4 illustrates system configuration data that may be
maintained by a customer configuration server in one
embodiment.
[0017] FIG. 5 illustrates one embodiment of a customer
configuration server that includes an application server, a tools
interface, and an input interface.
[0018] FIG. 6 illustrates how a customer configuration server
operating in a distributed system may transfer explorer data to
another customer configuration server, according to one
embodiment.
[0019] FIG. 7 is a flowchart representing one embodiment of a
method for organizing and accessing system configuration data for
multiple computer systems.
[0020] FIG. 8 is a flowchart of one embodiment of a method of
resolving a service problem.
[0021] While the invention is susceptible to various modifications
and alternative forms, specific embodiments thereof are shown by
way of example in the drawings and will herein be described in
detail. It should be understood, however, that the drawings and
detailed description thereto are not intended to limit the
invention to the particular form disclosed, but on the contrary,
the intention is to cover all modifications, equivalents and
alternatives falling within the spirit and scope of the invention
as defined by the appended claims.
DETAILED DESCRIPTION OF EMBODIMENTS
[0022] FIG. 1 shows a computer system 10 that is suitable for
implementing various embodiments of a customer configuration server
100 that may provide up-to-date system configuration data 140 for
multiple computer systems 101 to service personnel. System
configuration data 140 may include data 140A-140N for multiple
customers' computer systems 101A-101N, and thus customer
configuration server 100 may provide service personnel with a
single interface to data 140 representing many of the service
personnel's customers' computer systems 101. Customer configuration
server 100 may organize system configuration data 140 according to
a hierarchy of logical groups within system configuration data 140.
Some of those logical groups may group the portions 140N of system
configuration data 140 that correspond to a particular computer
system 101N together. Customer configuration server 100 may provide
access to and/or process system configuration data based on the
organizational hierarchy. Note that throughout this disclosure,
drawing features identified by the same numbers followed by unique
letters (e.g., computer systems 101A and 101N) may collectively be
referred to by the number alone (e.g., computer systems 101).
[0023] Computer systems 101 may include various types of computing
devices. For example, computer systems 101 may include servers,
storage systems, network switches and/or routers, or any other type
of computing device that includes a processor and a memory.
Additionally, any component or environment related to and/or
supporting a computer system 101 may be described as being included
within that computer system. Thus, the system configuration data
140 for a computer system 101 may include data corresponding to the
power feeds that supply other computer system components with
power, the personnel that operate and/or manage that computer
system 101, site maps related to that computer system, air
conditioning units that maintain the temperature for the computer
system, etc.
[0024] Computer system 10 may include components such as memory 17,
a central processing unit (CPU) or processor 16, an input/output
(I/O) interface, and device interconnect 15. Interconnect 15 is
relied upon to communicate data from one component to another. For
example, interconnect 15 may be a point-to-point interconnect, a
shared bus, a combination of point-to-point interconnects and one
or more buses, and/or a bus hierarchy including a system bus,
processor bus, memory bus and I/O buses such as a peripheral
component interconnect (PCI) bus. Memory 17 may store program
instructions accessed by the processor 16. Instructions and data
implementing a customer configuration server 100 may be stored in
memory 17. An operating system may also be stored in memory 17
[0025] Computer system 10 may further include other software and
hardware components such as an input/output (I/O) interface that
may be coupled to various other components and memory 17. For
example, the computer system may be coupled to a network through a
network interface that provides access to a plurality of
network-attached devices. Computer system 10 may also include video
monitors or other displays, track balls, mice, keyboards, local
storage devices (hard drives, optical storage devices, etc.), local
printers, plotters, scanners, or other computer peripheral devices
for use with a computer system 10.
[0026] In different embodiments, the computer system 10 may take
various forms, including a personal computer system, desktop
computer, notebook computer, workstation, server, mainframe
computer system, network appliance, network computer, Internet
appliance, personal digital assistant (PDA), embedded device, smart
phone, television system, or combinations thereof. In general, the
term computer system may be broadly defined to encompass any device
having a processor that executes instructions from a computer
accessible medium such as memory 17.
[0027] A customer configuration server 100 may provide a front-end
to system configuration data 140, allowing service personnel to
search, view, and/or process selected portions of the system
configuration data 140. Service personnel may use the system
configuration data 140 to service both software and hardware
components of the computer systems 101. Service may include repair,
addition, removal and/or replacement of components.
[0028] Some service personnel may be employed by the supplier that
provided the computer systems 101 to various customers. These
service personnel (e.g., field service technicians and on-site
service providers) may provide ongoing maintenance and support for
customers' computer systems 101. Other service personnel may be
employees of a customer (e.g., a customer's employee may access the
system configuration data 140 to obtain a report on current
configuration data for a particular one of that customer's computer
systems). Both supplier service personnel and customer service
personnel may access system configuration data 140 via customer
configuration server 100 in some situations. In other
implementations, access to system configuration data 140 may be
restricted to a supplier's service personnel.
[0029] System configuration data 140 includes configuration
information for several different computer systems 101A through
101N. Each computer system's configuration information 140 may
include one or more objects (e.g., files, documents and/or database
records). Various types of data may be included within each
computer system's configuration information. For example, the
configuration information for one computer system may include
digital photos of the physical layout of components within that
computer system, data files listing the hardware and/or software
components included in that computer system, database records
indicating the service history for one or more components included
in that computer system, documents that include customer contact
information for that computer system (e.g., text documents or
pointers or links to a centralized client contact list), files
identifying service personnel assigned to that computer system,
etc.
[0030] Note that system configuration data 140 is a logical
representation of the system configuration data that is accessible
to customer configuration server 100. System configuration data 140
may be stored in various physical storage locations. In some
embodiments, system configuration data 140 may be stored on a
storage device (e.g., a disk drive) included in computer system 10.
In another embodiment, system configuration data 140 may be stored
on a dedicated file server coupled to computer system 10. System
configuration data 140 may also be stored in a storage system
(e.g., a RAID system) that is coupled to computer system 10 by a
network. In other embodiments, system configuration data may be
distributed among several storage devices and/or computer
systems.
[0031] In some embodiments, portions of system configuration data
140 may be stored in one or more databases, which may each be
maintained by a different database management system. For example,
some system configuration data 140 may be included in a service
history database that stores information about field replaceable
units (FRUs) that the service personnel have serviced. This
database may include information such as the FRU ID, FRU age and/or
installation data, customer ID, computer system ID, service date,
the name or ID of the service person(s) who serviced the field
replaceable unit, and/or a description of the problems found during
servicing. Another database may store inventory data (e.g.,
replacement part name, part number and version for a particular
system configuration) identifying replacement parts that may be
needed for various computer system configurations. Some system
configuration data 140 may also be included within a manufacturing
and/or sales database indicating what parts have been provided to
each customer and/or which computer systems in which those parts
were intended to be included.
[0032] In some embodiments, customer configuration server 100 may
access portions of system configuration data 140 by querying the
appropriate databases. For example, in many embodiments, customer
configuration server 100 may be configured to query one or more
databases for system configuration data 140 corresponding to a
particular computer system 101 in response to receiving a service
personnel request for access to system configuration data 140 that
corresponds to that computer system 101. Customer configuration
server 100 may provide data access services for accessing various
types of databases, e.g. through directly supporting programs that
include and/or interface to proprietary databases, such as SAP,
Lotus Notes, CICS, etc., or through standardized interfaces, such
as ODBC, JDBC, etc. In some embodiments, customer configuration
server 100 may also provide updates to one or more remote databases
(e.g., in response to service personnel updating the components
included within a computer system).
[0033] Customer configuration server 100 may also provide services
for accessing network directories, such as directories that support
the standard Lightweight Directory Access Protocol (LDAP) in some
embodiments. Thus, customer configuration server 100 may provide
real-time access to multiple disparate data sources of system
configuration data 140. Furthermore, as new data sources (e.g., new
databases) for configuration information become available, customer
configuration server 100 may be updated to provide services for
accessing the new data sources.
[0034] Customer configuration server 100 may track the physical
location of various objects included in system configuration data
140. For example, customer configuration server 100 may build an
index that tracks the physical location of various objects (or
groups of objects). As used herein, an "object" may include one or
more files, object oriented programming objects, database records,
or other data structures. In some embodiments, an index may track
which software application manages access to various portions of
system configuration data 140. In some embodiments, the
organization of entries within the index may reflect how the
objects included in system configuration data 140 are organized
within an organizational hierarchy. In other embodiments, each
index entry may explicitly indicate where an object is organized
within the hierarchy of data. An index may include multiple
attributes of each object in the hierarchy so that more flexible
searches for items of interest may be performed.
[0035] Customer configuration server 100 may organize system
configuration data 140 according to a hierarchy that logically
groups related portions of system configuration data 140. FIG. 2
illustrates a hierarchy 200 that customer configuration server 100
may use to organize files within system configuration data 140. At
a low level of the hierarchy, customer configuration server 100 may
group objects OA-OC for an individual computer system CSA together
within the hierarchy. Files for several computer systems CSA-CSC
may then be grouped together, for example, by customer CB. Note
that in some embodiments, computer systems may be grouped together
by divisions within a company before being grouped together by
customers.
[0036] Objects representing several different customers CA-CC's
computer systems may be grouped together according to the
geographical state SB in which those customers' computer systems
are located. Similarly, objects representing several states SA-SB's
computer systems may be organized by the geographical region RC in
which those states are located. Regions RA-RC may be grouped
according to the country CNA in which those regions are located.
Note that other objects may be included within several of the other
groupings (e.g., CNB, CNC, RA, RB, SA, CA, CC, and CSB) but are not
illustrated for clarity.
[0037] The hierarchy illustrated in FIG. 2 is merely exemplary.
Some embodiments may use additional object groupings so that the
system configuration data 140 is subdivided into a desired number
of groups at each level of the hierarchy 200. For example,
customers may be further (or alternatively) grouped by the city in
which their headquarters are located (e.g., if the number of
customers per state becomes undesirably large). Computer systems
belonging to different customers may also or alternatively be
grouped together by business type (e.g., finance, education,
government, manufacturing, etc.). Other groupings within the
hierarchy may be used instead of and/or in addition to the grouping
illustrated in FIG. 2.
[0038] System configuration data 140 may be stored in various data
sources. For example, some of system configuration data 140 may be
stored as flat files included within a directory tree. Directories
of these files may be organized according to the hierarchy 200
maintained by customer configuration server 100. For example,
country directories may be created for each country, customer
directories may be created within a country directory for each
customer based in that country, and computer system directories may
be created within a customer directory for each individual computer
system owned by that customer. Other directories may be created
within each computer system directory (e.g., in order to group
different types of data that is available for each individual
computer system).
[0039] System configuration data 140 may be provided in various
ways to customer configuration server 100 for organization within
hierarchy 200. For example, system configuration data 140 may be
uploaded (e.g., via HTTP), emailed, downloaded from one or more
databases, or transferred or copied between instances of customer
configuration server 100. For example, customer configuration
server 100 may be configured to receive uploaded data entered by
service personnel performing a field service call (e.g., the
service person(s) may enter system configuration data 140 into a
wireless appliance and upload the data to customer configuration
server 100).
[0040] Customer configuration server 100 may also receive system
configuration data generated by an explorer mechanism operating on
a customers' computer system. FIG. 3 illustrates one embodiment of
a customer configuration server 100 that receives explorer data
sets 115A-115N. Note that each data set 115 may be received at a
different time and via a different delivery method. Each set of
explorer data 115A-115N describes a particular computer system
101A-101N. Explorer mechanisms 130 executing on multiple computer
systems 101A through 101N may each output explorer data 115A
through 115N.
[0041] Computer systems 101A through 101N may each include at least
one processor that executes instructions from a computer accessible
medium. Each computer system 101 may include various types of
software components 110 and hardware components 120. For example,
software components 110 may include an operating system (OS), OS
patches, OS shared system libraries, device drivers, applications,
etc. Hardware components 120 may include processors, memory, disk
drives, system controllers, system cables, storage connection
switches, etc.
[0042] Computer systems 101 may be physically distributed
throughout numerous geographical locations (e.g., each computer
system 101 may be located in a different building, city, state,
country, etc.). Each computer system 101 may include software
components 110 and hardware components 120. Some computer systems
101 may belong to different customers. Other computer systems 101
may be owned by the same customer (e.g., different computer systems
may be used within different divisions of the same company).
[0043] An explorer 130 may execute on each computer system 101. An
explorer 130 may be configured to collect explorer data 115 for the
computer system 101A executing that explorer in some embodiments.
In other embodiments, an explorer 130 may execute on one system
101A and collect explorer data 115N for another system 101N. The
explorer 130 may be configured to output a set of explorer data
that includes information about the hardware components 120 and/or
software components 110 included in a particular computer system
101. Note that explorer data 115 from any number of computer
systems 101 may be provided to the customer configuration server
100. Each set of explorer data may include one or more objects.
[0044] An explorer 130 may generate multiple sets of explorer data
for the same computer system 101. For example, an explorer may be
configured to periodically (e.g., weekly or monthly) perform system
discovery to identify which hardware components 120 and/or software
components 130 are included in a particular computer system. An
explorer may also be configured to be initiated at any time by a
customer or service person. In embodiments where multiple explorer
data sets 115 may exist for a single computer system 101, each
explorer data set may include information identifying the time at
which that explorer data set 115 was created or provided to
customer configuration server 100 (e.g., each explorer data
object's name may indicate the date on which that explorer data
object was created). Alternatively, customer configuration server
100 may timestamp each explorer data set 115 upon receipt.
[0045] Each explorer data set 115 may include information
identifying software and/or hardware components that are currently
(e.g., as of the time the explorer 130 executed) installed in a
particular computer system 100. For example, explorer data 115A
may, among other things, identify an OS patch version and/or type
of disk drive currently in use or installed within a computer
system 101A. The information may identify each component by name,
type, version number, and/or other identifying indicia. The
components identified within each explorer data set 115 for a
particular computer system 101 may vary as components within that
computer system are added, upgraded, and/or replaced.
[0046] When customer configuration server 100 receives explorer
data 115, the customer configuration server may organize the
explorer data within the hierarchy and store the explorer data to
an appropriate storage location. Customer configuration server 100
may store the explorer data within a database or directory and/or
update an index to reflect the physical location in which the
explorer data is stored. In some embodiments, customer
configuration server 100 may be configured to initiate one or more
automated tasks upon receiving a set of explorer data. For example,
the customer configuration server 100 may automatically compare the
set of explorer data to a previously received set of explorer data
for the same computer system 101 to determine whether any
components have been added and/or removed from that computer
system. Customer configuration server 100 may also automatically
call an application to analyze the explorer data set (e.g., to
locate potential configuration problems within the sending computer
system 101). Automatic checks may be performed based on specific
attributes of the customer computer system 101 or based on
rudimentary tests of the contents of an explorer data set 115.
[0047] In some embodiments, customer configuration server 100 may
be configured to provide explorer 130 to customer computer systems
101. For example, a customer may send an email to an email address
associated with customer configuration server 100 and, in response,
customer configuration server 100 may automatically email explorer
130 to the requesting customer. Customer configuration server 100
may, in some embodiments, be configured to analyze each received
explorer data set 115 to determine which version of an explorer
application was used to create that data set. If the version is not
the most recent version of the explorer application, customer
configuration server 100 may automatically send an updated version
of the explorer application to the computer system 101 that
provided that explorer data set.
[0048] FIG. 4 illustrates different types of information that may
be included within system configuration data 140 for each customer
computer system 101. In FIG. 4, system configuration data 140 is
illustrated as including data for two computer systems, data 140A
and 140B, as well as one or more general reports 144. The customer
configuration server may generate general reports 144 by processing
(or by calling another application to process) data included in
both computer system data 140A and computer system data 140B.
Different types of system configuration data may be available for
different computer systems 101. Note that this illustration is
merely exemplary and that other embodiments may include data for
substantially larger numbers of computer systems 101.
[0049] System configuration data 140A and 140B for a particular
computer system may include explorer data 115 generated by an
explorer mechanism, FRU (field replaceable unit) information 142
identifying the FRUs included in that computer system, reports 144,
and/or miscellaneous data 146. Within each subset of the explorer
data 140A for a particular computer system 101A, there may be
several versions of a particular type of data. For example, if
explorer data 115A is sent to customer configuration server 100 on
a weekly basis, there may be multiple versions of explorer data
115A included in system configuration data 140A. Similarly, there
may be a several sets of FRU information 142A (e.g., customer
configuration server 100 may automatically generate a set of FRU
information from each set of explorer data 115A). In some
embodiments, customer configuration server 100 may compare and edit
FRU information and/or explorer data 115 in order to reduce
redundant data. Additionally, customer configuration server 100 may
limit the number of and/or age of explorer data 115 to maintain
(e.g., data older than 6 months may be deleted).
[0050] As described above, explorer data 115 may include
information about the hardware and software components included in
a particular computer system. FRU information 142 may include
information identifying each FRU within the system (e.g., by part
number, revision, slot in which that FRU is installed, installation
data, etc.). FRU information 142 may be generated from explorer
data 115 (e.g., by using a tool provided via the customer
configuration server 100, as will be described in more detail
below). FRU information 142 may also be gathered from a
manufacturing database or a field service database (e.g., a
database identifying the service history of particular FRUs).
Service personnel may also manually enter FRU information for a
particular type of FRU and/or customer computer system. Customer
configuration server 100 may organize the entered information
within the organizational hierarchy (e.g., by updating the FRU
information already stored for one or more customer computer
systems, by creating a file within an appropriate directory, or by
adding a reference to the entered FRU information at one or more
places in an index).
[0051] Reports 144 may include report objects generated by
executing one or more tools provided via the customer configuration
server 100 on explorer data 115A and/or FRU information, as will be
described in more detail below. Miscellaneous data 146A may include
various other types of objects that relate to that particular
computer system. For example, a service person may upload images
showing the physical layout of FRUs within the system. Similarly, a
sales or service person may enter customer contact information for
each system. Another example of miscellaneous data 146 is
information identifying which service person(s) are assigned to a
particular computer system, customer, region, etc. The
miscellaneous data may be identified (e.g., by selecting a
particular computer system when uploading the data or by giving the
data a particular object name) as corresponding to a particular
computer system, and the customer configuration server 100 may use
this identifying information to appropriately organize this data
within system configuration data 140. Note that miscellaneous data
may also be associated with a particular customer, region, state,
country, etc. and may include links to other data stores.
[0052] FIG. 5 illustrates one embodiment of a customer
configuration server 100. In this embodiment, customer
configuration server 100 includes an application server 235, a
tools interface 240, and input interface 245. Input interface 245
allows various applications and service personnel to request access
to system configuration data 140. In many embodiments, service
personnel may interact with customer configuration server 100 via a
web browser on a local computer system. Thus, input interface 245
may be configured to interact with various web applications in
order to provide information to and receive information from
service personnel. In one embodiment, input interface 245 may be
multilingual, allowing service personnel to select a language in
which to interact with the customer configuration server 100. Tools
interface 240 may allow customer configuration server 100 to
request that external applications, or tools, perform selected
operations on system configuration data 140 (e.g., to create one or
more reports 144).
[0053] Note that in many embodiments, application server 235 may
include and/or communicate with a web server (not shown).
Alternatively, customer configuration server 100 may include a web
server instead of an application server. The application server 235
may be responsible for deploying and running various business logic
layer applications (via tools interface 240) and for interacting
with and integrating various enterprise-wide resources, such as web
servers and databases. Application server 235 may provide a
database service for applications (e.g., tools called by the
application server) to utilize as an interface between the
application and the database, providing a level of abstraction
between the application and the particular type(s) of databases
accessed by the application. Application server 235 may maintain
the organizational hierarchy 200 by providing application services
for indexing and/or searching various groups of objects (e.g.,
located within various directories and/or databases). An
application server 235 may be configured to provide services to
software executing on different computer systems than the
application server 235.
[0054] Application server 235 may also provide application security
services or components. For example, different service personnel
may have different access privileges to system configuration data
140 (e.g., regional personnel may only have access to system
configuration data 140 associated with their region). Similarly,
customers may be allowed to view system configuration data for
their computer systems but may not be allowed to view system
configuration data for other customers' computer systems. Such
security features may be associated with organizational levels
within the hierarchy 200 maintained by customer configuration
server 100. Web application security may be considered at different
levels, such as: client-to-server communication, application-level
privileges, database access, directory service access, etc.
Application server 235 may include security-related
services/components that provide support for performing user
authentication, performing data encryption, communicating via
secure protocols such as Secure Sockets Layer (SSL), utilizing
security certificates, programming user access rights, integrating
with operating system security, etc.
[0055] Application server 235 may also provide services enabling a
web application to easily maintain user state information during a
user session or across user sessions. Application server 235 may
also support caching the results of application logic execution or
caching the results of web page/component output, so that for
appropriate subsequent requests, the results may be reused.
Application server 235 may support result streaming, such as
dynamically streaming HTTP output, which may be especially useful
for large result sets involving lengthy queries. A related service
may enable an application to easily display a large result set by
breaking the result set down into smaller groups and displaying
these groups to the user one at a time.
[0056] Application server 235 may also provide support for managing
various types of complex, multi-step transactions performed by many
web applications. For example, this support may be provided via a
software component model supported by the application server, such
as the Enterprise JavaBeans.TM. component model, or via integration
with third-party transaction process monitors, etc. It is often
desirable to enable web applications to perform certain operations
independently, as opposed to in response to a user request. For
example, it may be desirable to automatically send a newsletter to
customers and/or service personnel via email at regularly scheduled
intervals. Such a newsletter may indicate the availability of an
upgraded version of an explorer application, new tools and/or data
sources accessible via the customer configuration application 100,
etc. Application server 235 may support the creation and scheduling
of events to perform various types of operations. For example,
application server 235 may be configured to periodically email
reminders to service personnel. Similarly, application server 235
may be configured to periodically perform certain functions on
and/or call certain tools to operate on system configuration data
140 included in particular portions of the hierarchy 200.
Application server 235 may also support triggered events such as
automatically generating a report 144 in response to receiving
explorer data 114 and/or automatically emailing service personnel
if certain conditions arise (e.g., if performance of a function on
system configuration data 140 identifies that a threshold number of
failures have occurred for a particular component, service
personnel responsible for computer systems 101 that include that
component may be emailed the report). Web applications may utilize
various types of standard network application services, such as an
email service, FTP service, etc. Application server 235 may provide
these types of services and may enable applications to easily
integrate with the services.
[0057] Requests for access to system configuration data 140 may be
received via input interface 245. Requests may be received directly
(e.g., via a command-line interface) or indirectly (e.g., from a
web server client). The input interface 245 may include a graphical
and/or command line user interface for providing a display and/or
interactive access to service personnel.
[0058] Input interface 245 may facilitate display of one or more
menus (e.g., via a web browser). The menus may allow a service
person to "drill down" to desired data within the organizational
hierarchy 200 by navigating through the organizational levels
included in the hierarchy (e.g., by selecting a county CN, then a
region R, then a state S, then a customer C, then a computer system
CS, etc.). Thus, the menu may include selections that correspond to
data available at a particular level of the organizational
hierarchy 200 of system configuration data 140. For example, a
default menu may identify various countries for which system
configuration data 140 is available (e.g., by displaying a
clickable image map or by displaying a list of country names). The
menu options may correspond to groups of data or to individual
objects available at a selected level of the hierarchy 200 (e.g.,
one computer system level menu option may identify a report object
for a selected computer system, while another may identify a group
of explorer data sets for that computer system).
[0059] If a particular section of the hierarchy 200 is selected
(e.g., by typing in a particular country name or clicking a
particular country within an image map), the input interface may
facilitate display of additional menus. These menus may also
correspond to the organizational hierarchy 200. For example, if a
particular customer is selected, a list of that customer's computer
systems may be displayed. If a particular computer system is
selected, a list of the data (e.g., FRU information, explorer data,
miscellaneous data, and/or reports) available for that computer
system may be displayed. If miscellaneous data is selected, the
display may list the objects included in that computer system's
miscellaneous data. Selection of a particular object may cause that
object to be downloaded to the service person's local computer
and/or displayed via a web browser.
[0060] In some embodiments, input interface 245 may support a
graphical user interface. For example, if a service person "drills
down" or searches for a particular computer system, a graphical
representation of the hardware and/or software included in that
computer system (e.g., as identified within the most recently
received explorer data set for that computer system) may be
displayed to a user. For example, this user interface may show a
part name and number for each component and/or specific icons or
other indicia associated with each unique component. Some component
names and/or icons may be highlighted in a particular color to
indicate that the named components are hardware components. Similar
color-coding and/or indicators may be displayed for component names
and/or icons to identify failing and/or out of data components that
need service personnel attention. In many embodiments, options
corresponding to data objects associated with individual components
may be displayed in response to selection of the component name or
icon in a FRU list. For example, selection of a particular storage
device may result in the display of additional options
corresponding to that storage device's service history.
[0061] Options to select various functions and/or tools may be
provided via input interface 245. For example, a web page may
include a search box that allows service personnel to search
configuration data 140 for various information (e.g., to search for
computer systems included in a particular country, to search for
which computer systems currently include a particular type of FRU,
etc.). Results of the search may then be displayed. In embodiments
where service personnel access customer configuration server 100
via a web browser, different options may be presented depending on
the type of information currently being viewed. For example, if
data associated with a particular portion of the hierarchy 200 is
being viewed (e.g., a list of customers within a country), the
options displayed may correspond to functions and tools that can
operate on all of the data included in that portion of the
hierarchy. For example, if a service person is viewing a list of
computer systems owned by a particular customer, functions and
tools capable of operation on data for multiple computer systems
may be displayed. Similarly, if a service person is viewing a list
of explorer data sets 115 available for a particular computer
system, the display may include options to select functions and
tools that operate on one or more sets of explorer data. The
display may also include an option to select which portions of
system configuration data 140 the function or tool should operate
on. Some tools and/or functions may be selected to generate reports
144 from all or part of system configuration data 140.
[0062] Input interface 245 may also facilitate display of a current
operation being performed (e.g., via a graphical status bar
indicating how much of the operation has been performed) in
response to selection of a particular tool or function for
execution. For example, if a tool was selected to build a
particular report 144, the display may include a graphical
representation of the percentage of the report build that has
completed. Alternatively, the output may show the time elapsed and
other feedback mechanisms to inform the user that the processing is
ongoing.
[0063] Application server 235 may be configured to respond to
specific requests received via user interfaces 245 by performing
various operations and/or calling one or more tools via tools
interface 240. For example, application server 235 may receive a
request for the identities of computer systems 101 included in a
specific geographic location. In response, application server 235
may search system configuration data 140 (e.g., by navigating a
directory tree organized according to the organizational hierarchy)
for the requested information and provide the information to the
requesting application. In many embodiments, application server 235
may fulfill a request initiated by a service person by displaying
the requested data via a Web browser.
[0064] Functions performed by the application server 235 may
include searching, reading, and outputting (e.g., for display via a
web browser) system configuration data 140. Application server 235
may also be configured to update, create, delete, and reorganize
system configuration data 140 (e.g., system configuration data 140
may be reorganized in response to one customer acquiring computer
systems that formerly belonged to another customer). For example,
the application server 235 may create a directory for a new
customer in response to a request from service personnel or in
response to receiving explorer data corresponding to a customer for
which no system configuration data 140 is currently maintained.
Another function may involve transfer data between instances of
customer configuration server 100. Such a function may involve
transferring various types of objects using various transfer
protocols. The portions of system configuration data 140 on which
data access functions should be performed may be selected by a user
and may correspond to the organizational hierarchy. For example, a
function may be performed on all computer system data maintained
for a particular customer, or for all customer data maintained for
a particular country. Application server 235 may also include
scripts that perform utility functions such as managing the
operations of other scripts that access system configuration data
140.
[0065] Application server 235 may be configured to perform one or
more database accesses in response to certain requests received via
input interface 245. For example, if a service person drills down
to a particular computer system, menu options corresponding to each
component included in that computer system may be displayed. If the
service person selects a particular component, application server
235 may query one or more databases for system configuration data
corresponding to that component and display the returned data (if
any) to the service person. For example, the application server 235
may query a service database for that component's service
history.
[0066] Another function that may be performed by customer
configuration server 100 (or, in some embodiments, by a tool
accessible to customer configuration server 100) may involve
analyzing the system configuration data 140, extracting potentially
useful information based on the analysis, and storing the extracted
information in a report. Service personnel viewing the report may
decide to proactively upgrade, service, and/or replace various
components if the information identifies certain components as
being likely to fail (e.g., because those components are outdated,
have poor service history, etc.). For example, customer
configuration server 100 may analyze data included in a service
history database in order to generate reports indicating the
percentage failure for each type of component. Customer
configuration server 100 may also be configured to identify which
computer systems 101 currently include each type of component in
such reports. Customer configuration server 100 may further analyze
system configuration data 140 to generate reports indicating, for
example, whether certain components fail more often when used in
conjunction with other components. In some embodiments, the
customer configuration server 100 may be configured to perform data
mining in order to discover previously unknown relationships among
the data (e.g., facts) that may be helpful to users. These facts
may be stored as a report 144 for one or more computer systems
within system configuration data 140. For example, an exemplary
discovered fact may be recorded in a report as: "If PART=disk then
FAULTY=high, Confidence 90% supported by 900,000 rows." In this
example, the discovered fact indicates that a particular disk drive
used by different customers in different geographical locations is
faulty. A confidence of ninety percent may be supported by 900,000
rows (e.g., database records) analyzed within the system
configuration data 140. After reviewing such a report, service
personnel may, for example, decide to proactively replace the disk
drives before the same disk drive used by various customers
fail.
[0067] Other functions performed by application server 235 may
include automated tasks that are performed in response to service
personnel-specified triggers. For example, service personnel may
request that certain functions or tools be performed on a set of
explorer data as soon as that set of explorer data is received from
a customer. These automated tasks may be performed one or more
times in response to various triggers. Triggers may be recurring
triggers in many situations. For example, one automated task may be
performed on a weekly basis (e.g., each Tuesday at midnight). A
service person may select an automated task, the data on which the
automated task is to be performed, and/or the triggers associated
with that automated task via input interface 245. Automated tasks
may include performance of various functions and/or calling various
tools to operate on system configuration data included in selected
portions of the hierarchy 200. For example, automated tasks may
include comparing different versions of explorer data sets 115 for
a particular computer system 101 in response to receiving a new
explorer data set, analyzing a newly receiving explorer data set
for potential configuration problems, or emailing service personnel
in response to identifying potential configuration problems in one
or more computer systems 101. Other automated tasks may include
periodically deleting old data (e.g., removing explorer data sets
more than six months old) from system configuration data 140 and
periodically generating reports from system configuration data
140.
[0068] In some embodiments, application server 235 may perform
automated tasks asynchronously from job queues. As system resources
are made available to perform an automated task, a task may be
selected from a job queue and executed. Non-automated tasks
initiated by service personnel may take priority over automated
tasks pending in job queues.
[0069] In embodiments where the system configuration data 140 is
stored in a directory tree that reflects the organizational
hierarchy 200 maintained by the customer configuration server 100,
data may already be aggregated into the logical groupings on which
functions are typically performed. In such embodiments, each
directory may include a special object (e.g., a file) that
identifies (e.g., by identifying that level of the hierarchy at
which that directory resides) which type of directory that
directory is. For example, a special file type may identify a
multi-country directory, a country directory, a region directory,
etc. These files may be created either manually by service
personnel or automatically by the customer configuration server 100
(e.g., when creating the directory itself). Scripts included in the
customer configuration server 100 may use these files when
performing functions such as navigating the directory tree and
displaying information. An object's attributes may also be attached
to an object's description and tools may query the object's
attributes before those tools access the data contained within that
object. Note that in some embodiments such as those employing a
relational database management system for data storage, storage of
data may be virtual. For example, "stored" data may be linked via
pointers or linked lists. The tools interface may access
information identifying the associations and dependencies of such
virtually stored data.
[0070] Application server 235 may be configured to support a
specific protocol for server communication. The specific protocol
may enable communication via server commands (e.g., customer
configuration server 100 may be configured to respond to server
commands generated by performing various functions and/or calling
one or more tools). Server commands may be received from service
personnel (e.g., via an operating system (OS) command line
interface) or from another application configured to execute server
commands. For example, one server command may be used to request
inode characteristics about the system configuration data objects
stored in the physical computer system 10. Application server 235
may be configured to determine whether a server command should be
handled by that instance of the customer configuration server and,
if not, to forward the server command to the appropriate instance
of the customer configuration server. For example, if a server
command requests access to system configuration data in a
particular section of the hierarchy, and the receiving application
server does not manage data included in that section, the
application server may forward the server command. Similarly, some
server commands may be forwarded between instances of customer
configuration server 100 so that an instance executing on a
physical computer system located closer to the requester handles
the request (e.g., so that a computer system 10 in the same
building as the requester responds to the server command instead of
a computer system in another country).
[0071] In some embodiments, an application server 235 may include a
remote patch server. For example, a remote patch server may be
dedicated to provide patches to a customer (e.g., a patch tar
bundle of a new version of an explorer) or to another application
(e.g., a patch tar bundle of a new version of customer
configuration server 100). In one embodiment, the remote patch
application server 235 may be sent a file output name, email
address(es) of user(s) which should receive the patch bundle, and a
list of which patches to include in the patch bundle. The remote
patch server may respond by sending a size of the patch bundle to
the requesting user and emailing the patch to the specified
addresses. If another patch server is located closer to the
requesting user, the patch server that receives the request for a
patch may transfer the request to the other patch server, which may
in turn provide the requested patch bundle to the requesting
user.
[0072] The tools interface 240 may provide an interface to one or
more software tools that are external to the customer configuration
server 100. For example, the software tools may include third-party
tools or tools that are accessed by other applications in addition
to customer configuration server 100. In response to receiving a
request (e.g., a server command received via input interface 245)
specifying a particular tool and/or a particular portion of system
configuration data 140 on which that tool should operation,
application server 235 may call that tool and provide information
identifying which data to operate on (e.g., by accessing an index
used in maintaining the organizational hierarchy 200) to the tool
via tools interface 240. Customer configuration server 100 may be
configured to automatically save each tool's output as a report 144
within system configuration data 140.
[0073] Various types of tools may be accessible to customer
configuration server 100. One tool may be configured to perform a
diagnostic review and evaluation of all or part of a system
configuration data 140 for a particular computer system
configuration in order to provide reliability and availability
information about that computer system. For example, a MAL (Minimum
Accepted Level) tool may operate on a explorer data set (or a FRU
information set) for a particular computer system 101 to generate a
report listing all components included in that computer systems
whose revisions are beneath a minimum accepted revision for that
type of component. Another tool may operate on two different
explorer data sets to determine what components have been upgraded,
removed, and/or added during a particular time period. For example,
if explorer data sets are received monthly, such a tool may allow
service personnel to determine what changes, if any, were made to
that computer system's configuration within a particular month by
comparing the explorer data set sent for the previous month with
the explorer data set for the current month.
[0074] As mentioned above, each tool may have various controls and
options. Some of these controls and/or options may be unique to a
particular tool. Some tools may have controls and options such as
emailing output, showing specific report headers,
enabling/disabling various features, etc. Input interface 245 may
facilitate display of these options to service personnel (e.g., as
HTML radio buttons, checkboxes, or text entry fields) and receive
information indicating which options are selected.
[0075] In some embodiments, customer configuration server 100 may
operate in a distributed system. In such an embodiment, several
instances of customer configuration server 100 may be executing.
Some customer configuration servers 100 may be executing on the
same computer system. Other customer configuration servers 100 may
execute on different computer systems. Each customer configuration
server 100 may control access to system configuration data 140
included in a particular grouping within the hierarchy in one
embodiment. For example, each customer configuration server 100 may
manage system configuration data 140 logically grouped within a
particular country within the hierarchy (i.e., one customer
configuration server 100 may manage system configuration data
grouped within the United States logical grouping, and another
customer configuration server may manage system configuration data
grouped within the Australia logical grouping). In some
embodiments, each customer configuration server 100 may maintain an
index identifying which customer configuration server controls
access to each logical grouping of the system configuration data at
a particular level of the hierarchy, allowing each customer
configuration server to forward requests targeting portions of the
system configuration data 140 not managed by that customer
configuration server to the appropriate customer configuration
server.
[0076] In some embodiments, each customer configuration server may
be configured to transfer a request for access to system
configuration data 140 to another instance of the customer
configuration server 100. For example, one customer configuration
server 100 may transfer a request to another customer configuration
server 100 executing on a physical computing device in a location
better suited (e.g., due to geography and/or connectivity) to
handle the request. The customer configuration server 100 to which
the request is handled may subsequently handle the request and
return information to the requester. The requester may not perceive
the handoff between instances of the customer configuration server,
other than perhaps experiencing differences in network response
and/or processing speed.
[0077] FIG. 6 illustrates how system configuration data may be
transferred between customer configuration servers 100 operating in
a distributed system. Here, two customer configuration servers 100A
and 100B are executing. Explorer data 115 may be provided to the
customer configuration server 100A by a customer computer system
101. In response to receiving the explorer data, customer
configuration server 100A may access an index 500. The index may
identify which customer configuration server 100 controls access to
each logical grouping of system configuration data at a particular
level of the hierarchy. For example, in the illustrated embodiment,
the index 500 may identify which customer configuration server 100
controls access to each computer system 101's logical grouping
within the hierarchy. If customer configuration server 100A does
not control access to the portion of the hierarchy in which
customer computer system 101 is grouped, customer configuration
server 100A may transfer the explorer data 115 to another customer
configuration server 100B that does control access to that portion
of the hierarchy.
[0078] Any time a customer configuration server 100 updates its
index 500, it may also forward a server command to any other
customer configuration server, causing the other customer
configuration server to update its index. This way, each customer
configuration server 100 has the same index.
[0079] In the illustrated embodiment, the customer computer system
101 to which explorer data 115 corresponds may be uniquely
identified by a system identifier (8023ef78 in FIG. 6) included in
explorer data 115. For example, explorer data 115 may be a file
identified by a unique file name. The unique file name may include
the system identifier. In the illustrated embodiment, index 500 may
include the system identifiers of each computer system 101 for
which system configuration data 140 exists as well as an indication
as to which that computer system's configuration data is stored
(e.g., by indicating which customer configuration server 100
manages that portion of the system configuration data 140).
[0080] The customer configuration server 100A may be configured to
determine whether the system ID for each explorer data set 115 is
currently included in the index 500. If the system ID is included
in the index 500, the customer configuration server 100A may
determine which customer configuration server 100 is storing the
system configuration data 140 for that computer system 101. In this
example, the index 500 indicates that customer configuration server
100B is storing the system configuration data 140 for that customer
computer system, so customer configuration server 100A may transfer
the explorer data to customer configuration server 100B. When
customer configuration server 100B receives the explorer data 115,
it may access index 500 and, upon determining that it is the
appropriate customer configuration server to handle the data, store
explorer data 115.
[0081] If the customer configuration server 100A does not locate
the system identifier in the system index 500, then explorer data
115 may be cached in a separate portion of the hierarchy instead of
being organized as part of a particular computer system within the
hierarchy. Explorer identifiers may identify different explorer
data 115 stored in such a cache. Alternatively, customer
configuration server 100A may organize the information within the
hierarchy if enough information is available about the system
(e.g., the geographical location and customer information for that
system), add the system ID included in explorer data 115 to index
500, and store explorer data 115. If explorer data 115 is not
stored as part of a particular computer system within the
hierarchy, a service person may manually add the system ID for that
explorer data to the index 500, move explorer data 115 from the
explorer data cache to an associated storage location (e.g., by
updating index 500 to include a reference to explorer data 115),
and manually organize that computer system within the hierarchy
(e.g., by creating a new directory within a directory tree). Once
the system identifier is organized within the hierarchy, index 500
may be updated appropriately to include the system identifier and
to indicate which portion of the hierarchy includes (and thus which
customer configuration server controls access to) that computer
system. Subsequently-received data corresponding to that system may
be automatically forwarded to the appropriate customer
configuration server and organized within the hierarchy.
Additionally, the customer configuration server 100A may check each
cache that may store explorer data for data that corresponds to
indexed computer systems and automatically move that explorer data
to the appropriate computer system's portion of the hierarchy.
[0082] FIG. 7 illustrates one embodiment of a method of updating
and accessing system configuration data for multiple computer
systems. At 610, configuration data corresponding to a particular
computer system, computer system A, is received. Such configuration
data may include explorer data identifying which components are
currently included in that computer system, contact data
identifying a customer contact associated with that computer
system, FRU data identifying FRUs included in that computer system
and/or the service history of FRUs included in that computer
system, digital images of the computer system, etc. The
configuration data may be received via email or various transfer
protocols (e.g., HTTP) or received in response to a database query.
In one embodiment, the configuration data may be an explorer data
set generated by an explorer executing on a computer system.
[0083] In response to receiving the data associated with computer
system A, the data is organized within a hierarchy of system
configuration data, as shown at 612. The hierarchy organizes data
associated with multiple computer systems. The hierarchy may
logically group data associated with individual computer systems so
that all of the information currently available for a particular
computer system can be readily identified. The hierarchy may also
logically group computer systems (e.g., by customer, industry,
location, etc.), facilitating manageable access to and/or
management of the system configuration data. Organizing the
received data within the hierarchy may include adding a reference
to the data in an index and/or a directory tree and physically
storing the data within a physical storage location identified by
the reference.
[0084] At 614, actions 610 and 612 may be repeated for
configuration data associated with one or more other computer
systems. These functions may be similarly repeated for other
computer systems. Additionally, if additional configuration data is
later received for computer system A, actions 610 and 612 may be
similarly repeated.
[0085] In response to a request received at 616, a function may be
performed on system configuration data organized within a selected
portion of the hierarchy, as shown at 618. The request may specify
a tool or process to perform on a particular set of the system
configuration data via reference to the hierarchy. For example, the
request may indicate that a particular type of data include within
each a particular customer's computer systems be processed. By
organizing the data for multiple computer systems within the
hierarchy, the same tools or processes used to perform particular
functions may be easily applied to each computer system's
configuration data.
[0086] Note that actions 610-612 and 616-618 may be performed at
substantially the same time (e.g., data maybe organized within the
hierarchy during the same time as other data in another portion of
the hierarchy is being processed). Also note that additional data
for a particular system may be received after similar data
corresponding to that system has been processed (e.g., updated
versions of explorer data may be received periodically for a
particular system, and each set)
[0087] FIG. 8 shows one embodiment of accessing system
configuration data for multiple computer systems in order to
service a component included in a particular one of those computer
systems. At 710, the need for service in computer system A is
detected. Action 710 may be performed in various ways, including
receiving a client email or phone call requesting service;
analyzing a report included in the system configuration data for
computer system A that indicates an irregularity; analyzing a
report generated for multiple computer systems indicating that a
component; which is included in computer system A, should be
recalled or upgraded, etc.
[0088] In order to resolve the service problem, the configuration
data for computer system A may be requested from a customer
configuration server that organizes system configuration data for
multiple computer systems according to a hierarchy of logical
groups. The system configuration data for computer system A may be
requested in various ways. For example, in one embodiment, a
service person may view several options identifying various
computer systems owned by a particular customer via a web browser.
System configuration data corresponding to computer system A may be
requested by selecting the option identifying computer system A. In
another embodiment, a service person may request computer system
A's configuration data by entering the system ID of computer system
A as a search term.
[0089] In response to the request for configuration data for
computer system A, the customer configuration server may provide
the service person with options identifying data objects included
in computer system A's logical group of system configuration data,
as shown at 714. The data objects identified by each option may be
available from various data sources accessible to the customer
configuration server. The customer configuration server may provide
the options to the service person by displaying the options in a
web browser. For example, the customer configuration server may
provide options identifying explorer data sets available for
computer system A for display on the service person's web browser.
Some options may identify a group of data objects. For example, a
report option may identify to a group of report objects. Selection
of the report option may cause options corresponding to each
individual report object to be displayed. The customer
configuration server may also provide additional options
corresponding to various functions and/or tools that may be applied
to certain data objects and/or groups of data objects.
[0090] One of the options identifying a particular data object may
be selected, and the customer configuration server may access the
selected data object from its data source (e.g., by retrieving the
data object from a directory or by querying a database), as shown
at 718. If the option was selected in conjunction with a non-data
object option identifying a function, the customer configuration
server may perform the selected function on the selected data
object. The customer configuration server may provide the data
object to the service person (e.g., by displaying the data object
on a web browser or by emailing the data object to the service
person) in many embodiments. If a function was selected to be
performed on the selected data object, the customer configuration
server may provide the result of the function (e.g., a report data
object) to the service person.
[0091] The service person may review the data object in order to
evaluate the service problem identified at 710. For example, the
service person may have selected the most recently created explorer
data set (at 716) in order to view the current configuration of
computer system A. Alternatively, the service person may have
selected a service history object corresponding to a particular
component (e.g., in order to determine whether a malfunctioning
component has experienced similar problems before). Reviewing the
data object may allow the service person to resolve the service
problem. For example, a data object that identifies the specific
part numbers of malfunctioning components may provide the service
person with information needed to order replacement parts. A report
object identifying which components are below a minimum acceptable
level may allow the service person to identify an out-of-date
component as a possible cause of the service problem and/or allow
the service person to perform preventative maintenance. If the
selected data object and/or function does not help resolve the
problem, additional data objects may be selected, as shown at 720.
The service person may also update one or more data objects in
response to resolving the service problem (not shown). For example,
the service person may update a component's service history if a
component was serviced or update a FRU list if a FRU was
replaced.
[0092] Since system configuration data for multiple computer
systems may be managed by the customer configuration server,
functions 710-720 may be repeated for one or more other computer
systems, as indicated at 722.
[0093] Note that a customer configuration server 100 may be
implemented as a single application, multiple applications, a
software package, a software suite, one or more software modules,
one or more software mechanisms, one or more software routines,
other sets of programming instructions executable by a computer
system, or a combination thereof. Customer configuration server 100
may be implemented in a variety of ways, using a variety of
programming languages, including procedure-based techniques,
component-based techniques, and/or object-oriented techniques,
among others. For example, the customer configuration server 100
may be implemented with open source code and languages (e.g.,
openssh and openssl) that run on multiple operating systems.
Customer configuration server 100 may operate in a Web server
environment. For example, the Web environment may include an Apache
Web server, Perl CGI scripts and a suitable Web browser.
[0094] Note that customer configuration server 100 may be
configured to provide various users with access to system
configuration data 140. Such users may include service personnel,
customers, etc. Customer configuration server 100 may support
various login and/or authentication procedures in order to restrict
unidentified users' access to system configuration data 140.
[0095] The flow charts described herein represent exemplary
embodiments of methods. The methods may be implemented in software,
hardware, or a combination thereof. The order of method may be
changed, and various elements may be added, reordered, combined,
omitted, modified, etc.
[0096] Various modifications and changes may be made to the
invention as would be obvious to a person skilled in the art having
the benefit of this disclosure. It is intended that the following
claims be interpreted to embrace all such modifications and changes
and, accordingly, the specifications and drawings are to be
regarded in an illustrative rather than a restrictive sense.
[0097] Various embodiments may further include receiving, sending
or storing instructions and/or data implemented in accordance with
the foregoing description upon a computer readable medium.
Generally speaking, a computer readable medium may include storage
media or memory media such as magnetic or optical media, e.g., disk
or CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM,
DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc. as well as transmission
media or signals such as electrical, electromagnetic, or digital
signals, conveyed via a communication medium such as network and/or
a wireless link.
* * * * *