# Patent

## Title
Self-diagnosing systems using matrix barcodes

## Abstract

Systems, methods and computer program products for diagnosing consistency of a software cluster are provided herein. The system includes a deployment manager configured to function as a master node of the software cluster, a plurality of nodes connected to the deployment manager, and an electronic device or devices registered with the deployment manager. The deployment manager can be configured to generate a master matrix barcode and each of the plurality of nodes can be configured to generate a node matrix barcode. The electronic device(s) may be associated with a system administrator and may also be installed with application software. Embodiments may allow the system administrator to encode, manage and analyze diagnostic information of the nodes in the software cluster utilizing the master matrix barcode and the node matrix barcode in an efficient manner.

## Background
BACKGROUND
The field of the invention regards systems and methods for establishing or maintaining network clusters. More specifically, the consistency or adaptability of network software clusters is measured, tracked or maintained using machine parsable codes, such as a matrix barcode or other machine readable codes.
Application clustering or software clustering links multiple computer servers into a cluster—a group of servers that act like a single system. Each of the servers in a cluster may maintain the same information and may collectively perform administrative tasks such as load balancing, determination of node failures, and assignment failover duty. Application clusters are readily considered scalable because servers may be added or removed from the cluster as needs arise or as technology warrants.
When an application cluster is created, supplemented or changed, versions of various software applications and operating systems may need to be confirmed as being compatible or as being within a range of suitable compatibility in order for the cluster to function. Such a compatibility analysis may be automated by software for testing application cluster configurations. A compatibility analysis may also be performed by system administrators, who may visually compare the software configurations of all the nodes of the cluster to confirm that all nodes are compatible with each other. The automated and the manual comparisons may each be difficult when comparing large software clusters having multiple software dependencies. For example, checking compatibility of application software and operating systems can be tedious and prone to erroneous results.
Automated compatibility testing systems can include storing configuration details in image headers that may be used to check version compatibility. These compatibility testing systems may utilize version code-based image headers to store configuration details. The headers may then be compared during installation to verify version compatibility. Using these headers may serve to limit the amount of information to be stored and compared.
BRIEF SUMMARY
Systems, methods, devices, and articles of manufacture are provided herein. These embodiments may be used for managing or monitoring or establishing application clusters using computer readable matrix barcodes. These matrix barcodes may be embedded with version or compatibility information of one or more components or applications of a cluster. The matrix barcodes may be read and compared by machines or users or both in order to analyze the compatibility of nodes in the cluster. This compatibility may be analyzed at set up, during operation, and when changes in the cluster occur.
In embodiments a system may be provided wherein the system may include a software cluster having a deployment manager configured to function as a master node, a plurality of nodes, and one or more other electronic devices registered with the deployment manager. The deployment manager may be configured to generate a master matrix barcode and each of the plurality of nodes may be configured to generate a node matrix barcode. In embodiments, the electronic device may be associated with a system administrator and may be installed with application software on numerous portable electronic devices. Through the use of the matrix barcodes, such as the comparison between or observation of master matrix barcodes and node matrix barcodes, the system may allow a system administrator to encode, manage, and analyze diagnostic information of the nodes in the software cluster utilizing. In embodiments this diagnostic information or analysis may include version control and compatibility control.
In embodiments methods may include processes for diagnosing consistency or compatibility of software clusters. These processes may include gathering diagnostic information of software clusters by a system administrator, initiating a function, such as a genVersionMatrixBarcode function implemented on the deployment manager by the system administrator to generate a master matrix barcode, invoking a function implemented on the plurality of nodes to generate specialized node matrix barcodes, and comparing the matrix barcodes in an automated fashion, manual fashion or both to determine version inconsistency or version compatibility of a cluster environment. These comparisons may be between a deployment manager and a plurality of nodes or other cluster applications or systems. In embodiments, version inconsistency may be encoded in a new matrix barcode and this new matrix barcode may be transmitted to an electronic device of the system administrator via a communication means, scanning and automatically decoding the new matrix barcode into a readable form by the electronic device. These transmitted matrix barcodes may be read by the system administrator to understand the version inconsistency, diagnose cluster issues, and resolve any version inconsistency identified automatically or by a system administrator or other user.
Numerous configurations and variants may be employed in embodiments and may include comparing the current component configurations or matrix barcodes with the last stored component configurations, with or without matrix barcodes, to determine any changes in configuration or compatibility. In embodiments, a system administrator or other designee may be notified of a configuration change or notified incompatibility and may use these notifications or information to consider or evaluate consistencies or compatibilities. The notifications may use matrix barcodes from a deployment manager and matrix barcodes from a node of the cluster to transmit or hold version or compatibility information. In embodiments, the matrix barcodes may be compatible with and may be read by hand-held electronic devices such as mobile phones or tablet devices. The use of these portable devices may provide additional flexibility and robustness for an administrator or user.
Still further, processes may be used in embodiments to encode the configuration parameters in a matrix barcode, transmit the matrix barcode to a process control system, and decode the matrix barcode to configure the system. In this method or in others, the matrix barcode may be also automatically decoded into a human readable form. This human readable form can include color changes, the introduction of human readable text or images into the matrix barcode and through other human readable forms as well. In so doing, a system administrator or other person may be notified of configuration changes and may even be informed based on the configuration of the matrix barcode itself. Further, the amount and the type of information that can be stored or transmitted using the matrix barcodes may be modified and enhanced in embodiments depending on factors such as system hardware.
Thus, embodiments may serve to manage configuration compatibility in a streamlined or tailored manner that may include the use of machine parsable code, preferably a matrix barcode, to save diagnostic information. In so doing, embodiments may compare matrix barcodes of various nodes to detect version changes, may be able to store large amounts of diagnostic information in the matrix barcode, and may provide a matrix barcode to other devices by scanning the code or using other transmission methodologies. As mentioned above, embodiments may be able to notify a system administrator or user of version changes by employing color coded matrix barcodes and may be able to transmit version changes to the system administrator through various communication means included wired and wireless means. Embodiments may also provide real-time cluster-management to the system administrator and provide meaningful amounts of diagnostic information in the matrix barcode in addition to version and compatibility information.
These and other embodiments and combinations are plausible and may be practiced drawings from the teachings and disclosure provided herein, and the many embodiments of the invention.



BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
FIG. 1 illustrates a block diagram of a system for diagnosing consistency of a software cluster as may also be employed in embodiments.
FIG. 2 illustrates a high-level operational flow chart of the system for diagnosing consistency of the software cluster as may also be employed in embodiments.
FIG. 3 illustrates a detailed flow chart reflecting a method for diagnosing consistency of the software cluster as may also be employed in embodiments.
FIG. 4 illustrates a schematic of a deployment manager and nodes as may also be employed in embodiments.
FIG. 5 illustrates a flow diagram showing how matrix barcoding processes and comparisons may be carried out autonomically and manually in accord with embodiments.



DETAILED DESCRIPTION
Embodiments can provide systems, methods, and articles of manufacture for diagnosing consistency or compatibility of a software cluster. Such embodiments may serve to diagnose consistency of a software cluster and provide tools to determine version inconsistency. In embodiments, version inconsistency may be determined autonomically as well as by a system administrator or user. In embodiments, the use of matrix barcodes may enable improved analysis by enabling user access to version information or other compatibility information through the use of hand-held or other portable matrix barcode scanning devices.
FIG. 1 illustrates a block diagram of the system 10 for diagnosing consistency of the software cluster 12 utilizing a machine parsable code in accordance with embodiments of the present invention. The system 10 is shown to comprise a deployment manager 14 configured to function as a master node of the software cluster 12, a plurality of nodes 16 connected to the deployment manager 14, and an electronic device 18 registered with the deployment manager 14. The deployment manager 14 may be configured to generate a master matrix barcode such as a quick response QR Code® 20 and each of the plurality of nodes 16 may be configured to generate a node matrix barcode 22. The electronic device 18 may be associated with a system administrator and may be installed with application software. The system 10 and other embodiments may allow the system administrator to easily encode, manage and analyze diagnostic information of the nodes in the software cluster 12 utilizing the master matrix barcode 20 and the node matrix barcode 22. The diagnostic information includes state information and version information of the nodes in the software cluster 12.
While creating a software cluster, the system administrator may gather all the diagnostic information of all the nodes of the software cluster 12. The diagnostic information may include state information and version information of the deployment manager and the other nodes. For example, a system administrator may initiate a genVersionMatrixBarcode function implemented in the deployment manager to generate the master matrix barcode 20. The genVersionMatrixBarcode function may gather diagnostic information of the deployment manager 14, encode the diagnostic information, and generate a master matrix barcode 20. The master matrix barcode 20 generated may be stored in a master pre-defined location on the deployment manager 14. The master pre-defined location may be an option folder “/opt/mastVerMatrixBarcode.” In embodiments, the deployment manager 14 may be considered to be a master node of the software cluster 12.
In embodiments initiating the genVersionMatrixBarcode function may in turn invoke a nodeVerMatrixBarcode function implemented on each of the plurality of nodes 16. The nodeVerMatrixBarcode function may gather the diagnostic information of each of the plurality of nodes 16, encode the diagnostic information and generate the node matrix barcode 22 on each of the plurality of nodes 16. The diagnostic information may include version information, instance information, and other compatibility indicia, as well as other specifics applicable to cluster compatibility.
In embodiments, the node matrix barcode 22 generated may be stored in a node pre-defined location on each of the plurality of nodes. The node pre-defined location may be another option folder “/opt/nodeVerMatrixBarcode.” The master pre-defined location and the node pre-defined location stores the master matrix barcode 20 and the node matrix barcode 22 respectively and may be accessible by all the nodes in the software cluster 12.
The system 10 may use a compareMatrixBarcode function to compare the master Matrix barcode and the node matrix barcode to determine version inconsistency between the deployment manager 14 and the plurality of the nodes 16. The compareMatrixBarcode function may be implemented in the deployment manager 14 and the compareMatrixBarcode function may also be implemented in any other node of the software cluster 12. The compareMatrixBarcode function programmatically compares the master matrix bar code 20 and the node matrix barcode 22 to determine version inconsistency.
Also, in embodiments, the system 10 may encode the version inconsistency in a new matrix barcode, which may be transmitted to the electronic device 18 via a communication device or suitable means. The new matrix barcode may also be displayed on the system 10 and the version inconsistency may be stored in a location “/opt/logVerMatrixBarcode” along with a date and timestamp. The communication means may be selected from a group consisting of: Bluetooth®, SMS and e-mail. The electronic device 18 may be selected from a group consisting of: mobile phones, smart phones, laptops or personal computers.
The new Matrix barcode may allow the system administrator to understand the version inconsistency, analyze the diagnostic information of the software cluster 12 and access an administration console to resolve the version inconsistency. The system administrator can scan or read (or both), the new Matrix barcode using the application software implemented in the electronic device 18.
The application software may, thus, be made compatible with the system 10 so that the electronic device 18 can easily scan the new matrix barcode and automatically decode the new matrix barcode into a human readable form or a more human readable form if some human readable information is already resident. In other words, by reading the new matrix barcode, the system administrator may be informed of the version inconsistency in the system 10. The system administrator may also have detailed information about various software levels of the cluster from the matrix barcode. The new matrix barcode may also provide a link to access the administration console, which the administrator can use to resolve the issues. Furthermore, the new matrix barcode may also include an error code, which can be accessed by the system administrator to compare against a knowledge database so as to find a quick resolution. In addition, the new matrix barcode may also include a notification which allows the administrator to open a problem report.
The system 10 or other embodiments may, thus, allow the system administrator to easily encode, manage and diagnose configuration information in the software cluster 12. The master matrix barcode 20 and the node matrix barcode 22 are machine parsable codes, which allow computers to easily understand and compare diagnostic information.
FIG. 2 illustrates a high-level operational flow chart of the system 10 for diagnosing consistency of the software cluster 12 in accordance with embodiments. This flow chart depicts a computer program product for diagnosing consistency of the software cluster 12. The processes or steps identified therein may be carried out in the disclosed order or in other orders, with more or fewer steps, with modifications to those steps, and all while remaining within the scope of the disclosure and the accompanying invention.
As indicated at block 24, computer readable instructions may be executed to gather diagnostic information of the software cluster to generate a master matrix barcode on the deployment manager. In a next step, computer readable instructions may be executed to generate a node matrix barcode on each of the plurality of nodes as shown in block 26. Computer readable instructions may also be executed to compare the master matrix barcode and the node matrix barcode to determine version inconsistency between the deployment manager and each of the plurality of nodes as indicated at block 28. Afterwards, the version inconsistency may be notified to the system administrator by means of a new matrix barcode as shown in block 30.
FIG. 3 illustrates a detailed flow chart reflecting a method for diagnosing consistency of the software cluster in accordance with embodiments of the invention. Initiating at block 32, diagnostic information of the software cluster may be gathered by a system administrator. As shown in block 34, a genVersionMatrixBarcode function implemented on the deployment manager may be initiated by the system administrator to generate a master matrix barcode. A nodeVerMatrixBarcode function implemented on the plurality of nodes may then be invoked by the genVersionMatrixBarcode function as indicated at block 36 and a node matrix barcode may be generated on each of the plurality of nodes by the nodeVerMatrixBarcode function as shown in block 38. In next step 40, the master matrix barcode and the node matrix barcode may be compared by a compareMatrixBarcode function to determine version inconsistency between the deployment manager and the plurality of nodes. The version inconsistency may be encoded in a new matrix barcode as indicated at block 42. The new matrix barcode may be transmitted to an electronic device of the system administrator via a communication means as shown in block 44. Then, the new matrix barcode may be scanned and automatically decoded into a readable form by the electronic device as indicated at block 46. As shown in block 48, the new matrix barcode may be read by the system administrator to understand the version inconsistency. Using this information, the version inconsistency may be diagnosed by the system administrator as indicated at block 50.
The new matrix barcode may also be provided with a color attribute so that the system administrator can easily identify the issues. For instance, a system without version inconsistency may have a green matrix barcode. The new matrix barcode encoded with error information would have a different color attribute. This may allow the system administrator to easily spot the different colored matrix barcodes, which may enable him to quickly identify and resolve errors.
The matrix barcode may store a large amount of information that can be readily read by machines. The information encoded in the matrix barcode may also be parsable into plain English-like language, which may be easily read by the machines and humans. By embedding the configuration information in the matrix barcodes, the system 10 can provide a means to compact diagnostic information and can allow the system administrator to retrieve information quickly.
FIG. 4 shows a schematic of deployment managers and nodes as may be employed in embodiments. Visible in FIG. 4 are a deployment manager 401, an administrator 406, a user 405, nodes 402 and 403 and a cluster wide-area-network 407. The deployment manager 401, which may function as a master node, is shown with a bus 420, a hard drive 419, a floppy CD-ROM 418, a network adapter 417, an I/O adapter 416, a serial port interface 415, additional interfaces 414, system memory 413, and a processing unit 412. Each of these components within the deployment manager 401 communicate back-and-forth and receive power from the bus 420.
Also shown in FIG. 4 is code 411 that may be resident on the hard drive 419 and in system memory 413. This code 411 may be parsed and executed by the processing unit 412. As can be seen the code 411 may include an operating system, applications, modules, plug-ins, and data. The components of the deployment manager 420 and its code 411 may also be found in the nodes 402 and 403 as well as in the administrator device 406 and in the user 405 device. Each of these components may communicate back and forth with one another through the cluster WAN 407.
As with the above, the deployment manager 401 may serve to allow a system administrator to understand the version inconsistency, analyze the diagnostic information of the software cluster, and access an administration console to resolve the version inconsistency or incompatibility. The system administrator can scan/read the new matrix barcode using the application software implemented in the deployment manager 401 or the device 406.
The application software may be made compatible because the electronic device 406 can easily scan the new matrix barcode and automatically decode the new matrix barcode into a human readable form. In other words, by reading the new matrix barcode, the system administrator may be informed of the version inconsistency in the cluster system being considered and may take action to resolve the inconsistency so that the cluster can perform as targeted QOS levels. The system administrator may also have detailed information about various software levels of the cluster from the matrix barcode.
In embodiments, the new matrix barcode may also provide a link to access the administration console, which the administrator can use to resolve the issues. Furthermore, the new matrix barcode may also include an error code, which can be accessed by the system administrator over the WAN other network, to compare against a knowledge database so as to find a quick resolution. In addition, the new matrix barcode may also include a notification that allows the administrator to open a problem report.
FIG. 5 shows a flow diagram employing processes as may be carried out in embodiments. As shown in FIG. 5 processes may be carried out automatically by the system, as shown in area 502 and with human intervention, as shown in area 501. At the outset of the cluster configuration a user, administrator, or other person may gather version levels information for each of the components and software applications to be employed in the cluster. This gathering is shown at 511. Upon verifying the version or compatibility information for the cluster components and applications, a user may build the cluster as shown at 512. This compiled and version check information may be used as inputs to a matrix barcode generation function that generates a master matrix barcode for the cluster. This master matrix bar code generation is shown by 513.
Area 502, which shows autonomic functions of embodiments, shows that a matrix barcode Daemon or subsystem may receive the master matrix barcode 513 and work in conjunction with the comparator 515 to determine if a cluster change has occurred. If the comparator 515 determines that a cluster component or software has changed the matrix barcode Daemon 514 may serve to regenerate Master matrix barcode as shown at 516. Likewise a comparator 518 may also identify changes in nodes of the cluster, and if appropriate, regenerate matrix barcodes on those particular nodes, as shown at 517. These regenerated Master matrix barcodes and matrix barcodes may be compared as shown at 519, and if changes are detected, the compatibility between the components or software may be evaluated and confirmed. When no pertinent changes are detected by the comparator 522 the Master matrix barcode, and the matrix barcode on the nodes may all be provided back to the subsystem 514. Likewise, the comparator 518, upon not sensing any change in configurations, may send an existing configuration schematic version information back to the matrix barcode Daemon 514.
The process flow shown in FIG. 5 may include additional as well as fewer components or steps. Some additional steps may include further intervention by a user or administrator, including visual inspection of QR codes, and system entry of direct version data. Other changes, for example less intervention by the administrator, may be done as well.
While the present invention has been described in terms of a system which notifies version inconsistency of a software cluster in the form of matrix barcode to a system administrator, this is not a necessary condition of the invention. Instead, the matrix barcode may be automatically regenerated by the system 10 when there is a change in the software cluster, without human intervention. Further, while preferred embodiments may use an electronic device for diagnosing the version inconsistency of the system, this does not have to be in all embodiments. For example, the administrator may diagnose the inconsistency on the system itself. Additionally, while the present invention has been described in terms of generating the master matrix barcode by initiating the genVersionMatrixBarcode function, this is not a necessary condition of embodiments. The matrix barcode may be generated using application programming interfaces (API) such as Google® Chart API or other means. Still further, in some implementations, the functions noted in the block may occur out of the order noted in the figures. For instance, two blocks shown in succession may, in fact, be executed substantially concurrently.
The corresponding structures, material, acts, and equivalents of all means or steps plus function elements in the claims below are intended to include any structure, material or act for performing the function in combination with other claimed elements are specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill without departing from the scope and spirit of the invention. The embodiments were chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for embodiments with various modifications as are suited for a particular contemplated use. For example, embodiments may be employed with existing cluster management techniques that are designed for simple, low-cost management of distributed and clustered power systems in technical and commercial computing environments.

## Claims

1. A system for diagnosing consistency of a software-cluster utilizing
a machine parse-able code, the system comprising:
a deployment manager including memory and a microprocessor;
an electronic device including memory and a microprocessor;
a first function implemented on the deployment manager, the first function initiated by a system administrator to generate a master matrix barcode;
the first function configured to invoke a second function implemented on a plurality of nodes connected to the deployment manager;
the second function configured to generate a node matrix barcode on each of the plurality of nodes;
a third function invoked to compare the master matrix barcode and the node matrix barcode and determine version inconsistency between the deployment manager and each of the plurality of nodes;
the deployment manager configured to encode the version inconsistency in a new matrix barcode;
the deployment manger configured to transmit the new matrix barcode to an electronic device of the system administrator via a communication means; and
the electronic device configured to scan and automatically decode the new matrix barcode into a human readable form.

2. The system of claim 1 wherein the diagnostic information may include state information and version information.

3. The system of claim 1 wherein the first function gathers diagnostic information of the deployment manager, encodes the diagnostic information and generates the master matrix barcode.

4. The system of claim 1 wherein the second function gathers diagnostic information of each of the plurality of nodes, encodes the diagnostic information and generates the node matrix barcode for each of the plurality of nodes.

5. The system of claim 1 wherein the master matrix barcode may be stored in a master pre-defined location on the deployment manager.

6. The system of claim 1 wherein the node matrix barcode may be stored in a node pre-defined location on each of the plurality of nodes.

7. The system of claim 1 wherein the system utilizes a compare function to compare the master matrix barcode and the node matrix barcode to determine version inconsistency between the deployment manager and each of the plurality of nodes.

8. The system of claim 6 wherein the system encodes the version inconsistency in a new matrix barcode, the new matrix barcode may be transmitted to the electronic device via a communication means.

9. The system of claim 8 wherein the new matrix barcode allows the system administrator to understand the version inconsistency, analyze the diagnostic information of the software cluster and access an administration console to resolve the version inconsistency.

10. The system of claim 8 wherein the new matrix barcode may be provided with a color attribute.

11. The system of claim 8 wherein the communication means is selected from a group consisting of: short-range wireless communication protocol, SMS and e-mail.

12. The system of claim 1 wherein the electronic device may comprise one or more of the following: mobile phones, smart phones, tablets, laptops and personal computers.

13. A computer program product being executed for diagnosing consistency of a software cluster, the software cluster comprising a deployment manager and a plurality of nodes, the computer program product comprising:
a non-transitory computer readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processor to:
gather diagnostic information of the software cluster by a system administrator, the software cluster comprising a deployment manager and a plurality of nodes;
initiate a first function implemented on the deployment manager by the system administrator to generate a master matrix barcode;
invoke a second function implemented on the plurality of nodes by the first function;
generate a node matrix barcode on each of the plurality of nodes by the second function;
compare the master matrix barcode and the node matrix barcode by a third function to determine version inconsistency between the deployment manager and each of the plurality of nodes;
encode the version inconsistency in a new matrix barcode;
transmit the new matrix barcode to an electronic device of the system administrator via a communication means; and
scan and automatically decode the new matrix barcode into a human readable form by the electronic device.

14. The computer program product of claim 13 wherein the computer readable instructions are further executable to compare node matrix barcodes from each of the plurality of nodes to detect version changes in software of the nodes.

15. The computer program product of claim 13 wherein the computer readable instructions are further executable to notify a system administrator or user of version changes in software of nodes by employing color coded matrix barcodes.

16. The computer program product of claim 13 wherein the computer readable instructions are further executable to compare current component configurations with previously stored component configurations and determine any changes in configuration or compatibility.

17. The computer program product of claim 13 wherein the computer readable instructions are further executable to allow a system administrator to encode, manage or analyze diagnostic information of the plurality of nodes of the software cluster.