Systems and methods for pushing firmware binaries using nested multi-threader operations

A computer may receive a request to generate a snapshot view of the enterprise network infrastructure. The computer may implement a multithread process to contemporaneously query a plurality of blade servers and server enclosures within the entire network infrastructure. The computer may contemporaneously receive a plurality of information files from the queried network resources (e.g. the blade servers, server enclosures). In active state modes, the computer may push firmware update binaries to the network resources. In a server processing and an active state mode, the computer may implement a multithreaded process to push the firmware update binaries to standalone servers or blade servers that can be accessed directly. In a blade enclosure processing and an active state mode, the computer may implemented a nested multi-threader, using child threads nested within a parent thread to a blade server enclosure to push firmware update binaries to blade servers in the enclosure.

TECHNICAL FIELD

This application relates generally to systems and methods for maintaining and monitoring network infrastructures and more particularly to a tool that uses nested multi-threaded operations for pushing firmware binaries to remote servers.

BACKGROUND

Enterprise network infrastructures are quite complex containing interconnected but geographically distributed network computers and other network resources. For example, a modern day enterprise may have multiple datacenters and/or server farms. Furthermore, a single server farm or a datacenter may contain several servers and several other computing resources. In the server farms and datacenters, blade server technology has allowed enterprises to configure several servers within a single enclosure—further increasing the complexity of a typical enterprise network infrastructure. Monitoring and managing a complex enterprise network infrastructure becomes a complex operation in itself.

The conventional solutions for monitoring and managing a complex enterprise network infrastructure have several technical shortcomings. For example, a conventional solution queries vendor maintained database to retrieve the operating status of respective network resources. However, due to a sophisticated nature of enterprise scale networks that may include multiple geographically dispersed sites, firewalls and other infrastructure entities, the vendor maintained database and respective web front application servers may represent an additional layer of complexity themselves. In such complex environments these databases also may not be fully updated in real time and may contain incomplete and/or old data thereby not presenting the current state of network resources. Furthermore, these databases are prone to errors, wherein the errors may be introduced during the write cycles or due to the programming bugs. Also, the database may not be available to receive queries all the time, thereby reducing a system administrator's ability to efficiently monitor and manage an enterprise network infrastructure.

Additionally, the conventional solutions do not provide an integrated snapshot view containing the relevant information needed by a system administrator. The vendor maintained database, apart from not being contemporaneous and error-free, may not store all the relevant information. The information pieces received from other devices and databases may be scattershot and the system administrator may have to manually sift through the received information to retrieve relevant information.

Conventional systems are also confined to the passive functionality of collecting the scattershot information. Conventional systems do not provide an active functionality of pushing updates to remote servers while gathering the hardware information about the servers. These updates may have to be performed manually separate and apart from the information gathering and report generating functionality.

Furthermore, conventional systems require specialized software and hardware resources. For example, one has to install a webserver and a database server to continuously gather information from multiple network resources within a network infrastructure. Specialized software may be required to interface with the webserver or database server to generate and display results based on the gathered information. The conventional setup with additional hardware and software resources may be slow, inefficient, and bulky to maintain.

As such, a significant improvement is required for tools for maintaining complex network infrastructures.

SUMMARY

What is therefore desired are systems and methods that may enable an active mode of updating firmware of remote servers while generating an integrated report about the remote servers.

Embodiments disclosed herein attempt to provide solutions to the aforementioned problems and provide other solutions as well. A computer may receive a request to generate a snapshot view of the enterprise network infrastructure. The computer may implement a multi-threaded process to contemporaneously query a plurality of blade servers and server enclosures within the entire network infrastructure. The computer may contemporaneously receive a plurality of information files from the queried network resources (e.g. the blade servers, server enclosures). An information file for a network resource may contain information of the network resource such as the operating status, currency (also referred to as assembly date), hardware serial number, firmware version, and/or other information of the network resources. Integrating the information in the received files, the computer may generate snapshot view file. The snapshot view file may be in hypertext markup language (HTML) format. The computer may transmit a selectable link to the snapshot view file to multiple user devices. A user, such as a system administrator, may select the link and the respective user device may display the snapshot view in an application such as a web browser.

The computer may further enable an active state to push server firmware updates using nested multi-threaders while generating the snapshot view of the network. A nested multi-threader may include one or more child threads within a parent thread. For example, the computer may execute a first parent thread to access an on-board administrator module of a first server enclosure containing a first set of blade servers. The computer may then spawn a first set of child threads for the first set of blade servers to push firmware updates to each of the blade servers. Each child thread in the first set of child threads may be nested within the parent thread. Furthermore, the computer may execute a second parent thread to access an on-board administrator module of a second server enclosure containing a second set of blade servers. The computer may then spawn a second set of child threads for the second set of blade servers to push firmware updates to each of the blade servers. As with the first set of child threads, each child thread in the second set of child threads may be nested within the second parent thread.

In an embodiment, a computer-implemented method comprises during a first parent thread executed by a computer: querying, by the computer, a first on-board administration module of a first server enclosure using a first internet protocol address of the first server enclosure to retrieve a first set of data records containing hardware and firmware information of a first set of blade servers in the first server enclosure; spawning, by the computer, a first set of child threads corresponding to the first set of blade servers, wherein each child thread of the first set of child threads is nested within the first parent thread; pushing, by the computer, a firmware upgrade binary for at least a subset of the first set of blade servers using corresponding subset of child threads of the first set of child threads; during a second parent thread executed by the computer contemporaneously with the first parent thread: querying, by the computer, a second on-board administration module of a second server enclosure using a second internet protocol address of the second server enclosure to retrieve a second set of data records containing hardware and firmware information of a second set of blade servers in the second server enclosure; spawning, by the computer, a second set of child threads corresponding to the second set of blade servers, wherein each child thread of the second set of child threads is nested within the second parent thread; and pushing, by the computer, a firmware upgrade binary for at least a subset of the second set of blade servers using corresponding subset of child threads of the set of child threads.

In another embodiment, a system comprises a non-transitory storage medium storing a plurality of computer instructions forming a snapshot view engine; a processor electrically coupled to the non-transitory storage medium and configured to execute the plurality of computer instructions to: during a first parent thread executed by the processor: query a first on-board administration module of a first server enclosure using a first internet protocol address of the first server enclosure to retrieve a first set of data records containing hardware and firmware information of a first set of blade servers in the first server enclosure; spawn a first set of child threads corresponding to the first set of blade servers, wherein each child thread of the first set of child threads is nested within the first parent thread; push a firmware upgrade binary for at least a subset of the first set of blade servers using corresponding subset of child threads of the first set of child threads; during a second parent thread executed by the processor contemporaneously with the first parent thread: query a second on-board administration module of a second server enclosure using a second internet protocol address of the second server enclosure to retrieve a second set of data records containing hardware and firmware information of a second set of blade servers in the second server enclosure; spawn a second set of child threads corresponding to the second set of blade servers, wherein each child thread of the second set of child threads is nested within the second parent thread; and push a firmware upgrade binary for at least a subset of the second set of blade servers using corresponding subset of child threads of the set of child threads.

DETAILED DESCRIPTION

Embodiments disclosed herein present a snapshot view of a network infrastructure using a one-click approach. The snapshot view can include hardware information (which may include firmware information) and status in the network infrastructure. Instead of executing complex protocols, a user, such as a system administrator, may launch a single copy of a snapshot view engine (also referred to as a snapshot engine) on a computer. In response, the computer may directly query the network resources in the network resources within the network infrastructure to retrieve hardware statistics, system state, and currency data (indicating the assembly date of a respective network resource). The method executed by the computer is therefore agentless because the method is based on a direct scan principle without using external databases, repositories, data collectors, or agents.

The computer may execute the snapshot view engine as a multi-threader. In other words, the computer may spin multiple threads of operations, with each thread of operation querying and retrieving information from a respective network resource contemporaneously with other threads. Using the multi-threaded approach, the computer may collect data from virtually unlimited number of network resources within a reasonable time-frame. The only limits imposed on the computer for such multi-threaded operation is hardware capability of the computer and the network resources and the throughput capability of the enterprise network infrastructure.

The snapshot view engine may rely upon RESTful API to upload the newly generated reports on a SharePoint site. There may be a retention mechanism allowing reports rotation on the SharePoint as per defined retention settings. At the same time, the snapshot view engine is capable of sending e-mail notifications to selected distribution lists. The notification may include a newly generated report URL as well as a link to a folder containing previous reports stored in accordance with the retention policies.

The snapshot view engine may operate in two scan modes. In a blade-enclosure infrastructure processing mode, the snapshot view engine may collect hardware and firmware data from blade enclosures and blade servers in the enclosures. For example, the snapshot view engine may connect with an on-board administrator of an enclosure to retrieve hardware data and firmware data about the blade servers in the enclosure. Alternatively, the snapshot view engine may connect to the blade servers through the on-board administrator to retrieve the hardware data and the firmware data. In a server processing mode, the snapshot view engine may retrieve hardware and firmware data from standalone servers and from the blade servers.

The snapshot view engine may be configured to be launched two operating states. In a passive operating state, the snapshot engine may collect hardware data and firmware data from blade servers or standalone servers. In an active operating state, the snapshot engine may push firmware updates to the blade servers or standalone servers. For standalone servers and blade servers that the snapshot view engine can access directly, the snapshot view engine may implement a multi-threader operation to push a firmware update to a standalone server or a blade server during a corresponding thread. For blade enclosures, the computer may implement a nested multi-threader operation.

A nested multi-threader operation may include one or more child threads within a parent thread. For example, the computer may execute a first parent thread to access an on-board administrator module of a first server enclosure containing a first set of blade servers. The computer may then spawn a first set of child threads for the first set of blade servers to push firmware updates to each of the blade servers. Each child thread in the first set of child threads may be nested within the parent thread. Furthermore, the computer may execute a second parent thread to access an on-board administrator module of a second server enclosure containing a second set of blade servers. The computer may then spawn a second set of child threads for the second set of blade servers to push firmware updates to each of the blade servers. As with the first set of child threads, each child thread in the second set of child threads may be nested within the second parent thread.

FIG. 1shows an illustrative network environment100, according to an exemplary embodiment. The snapshot view of a network infrastructure may be generated within the illustrative network environment100. The network environment100may comprise an application server102, a storage104, network106, a plurality of server enclosures108a,108b, . . .108n(collectively or commonly referred to as108), and a plurality of user devices110a,110b,110c,110d, . . .110n(collectively or commonly referred to as110). It should be understood that the illustrative network environment100is merely an example, and other network environments with additional, substitute, or lesser components should be considered to be within the scope of this disclosure.

The application server102may be any computing device comprising a processor and non-transitory machine-readable storage capable of executing the various tasks and processes described herein. The application server102may receive requests to generate a snapshot view from one or more of the client devices110or launch a respective task automatically within its own address space on a scheduled basis. Non-limiting examples of such computing devices may include workstation computers, laptop computers, server computers, and the like. While the illustrative network environment100includes a single application server102, it should be appreciated that in some embodiments the application server102may include any number of computing devices operating in a distributed computing environment.

The storage104may be any type of database containing files utilized for implementing one or more operations within the network environment100. For example, the storage104may contain application binaries, log files, and/or any other type of files used by the application serve102implementing one or more operations. Although the illustrative network environment100shows the storage104apart from the application server102, the storage104may be located within the application server102itself.

The network106may be any type of communication medium such as a local area network (LAN), metropolitan area network (MAN), and/or a wide area network (WAN). For instance, the network106may be the internet. The network106may be a combination of various wired and wireless links capable of carrying data packets in between the application server102and the server enclosures108.

Each of the server enclosures108may contain a plurality of blade servers. Non-limiting examples of the server enclosures108and constituent blade servers may include HPE Bladesystem, Cisco Unified Computing System (UCS), IBM BladeCenter, Dell PowerEdge, and/or any other type of blade server enclosures and blade servers. Each server enclosure108may include a chassis for holding the constituent blade servers and further provide an integrated power management and cooling features. Within a server enclosure108, an on-board administrator (OA) may module control the operation of the multiple blade servers. It should be understood that the server enclosures108are shown for illustrative purposes only and standalone servers should also be considered within the scope of this disclosure.

The user devices110can be any kind of computing devices. Non-limiting examples of user devices may include laptop computer110a, desktop computers110b,110n, smartphone110c, and tablet computer110d. The user devices110may communicate with the application server to transmit a request to generate a snapshot view of a network infrastructure. Furthermore, the user devices110may receive a snapshot view file or a link to a snapshot view file and display a snapshot view.

FIG. 2shows an illustrative server enclosure200, according to an embodiment. The server enclosure200may include a plurality of blade servers202a,202b,202c,202d,202e,202f,202g,202h(collectively or commonly referred to as202), a user interface204, and a plurality of input/output ports206. The server enclosure200may manage power and cooling to each of the blade servers202. A system administrator or another user may use the input/output ports206to access the enclosure200or one or more blade servers202enclosed therein. The user interface204may allow the system administrator or another user to configure one or more features of the enclosure200or the one or more blade servers202contained therein. An on-board administrator module (not shown) running within the sever enclosure200may maintain various operations within the server enclosure.

FIG. 3shows a block diagram showing illustrative software modules300implementing one or more processes described throughout this disclosure. A processor314may execute the software modules300. The software modules300may include a query generator module302, a multi-threading controller module304, a nested multi-threading controller module306, a retrieved results parser module308, a snapshot view file generator module310, and a snapshot view file updater module312.

The query generator module302may generate queries to a plurality of network resources, such as blade servers and server enclosures, based on a request to generate a snapshot view of a network infrastructure formed by the network resources. The query generator module302may customize query based on the firmware of a respective network resource, based upon the application programming interface (API) of the respective network resource. For example, the query generator module302may generate a first query for a server enclosure and a second query, different from the first, for a blade server.

The multi-threading controller module304may manage and control the multi-threading operation of the software modules300. For instance, the multi-threading controller module302may spawn a first thread for a first query and/or push firmware upgrades to a first network resource and a second thread for a second query and/or push firmware upgrades to a second network resource. Furthermore, under the control of the multi-threading controller304, the first thread may execute a first listener for any response data from the first network resource and the second thread may execute a second listener for any response data from the second network resource. It should be understood that the two threads described here are merely for illustration, and the multi-threading controller module304may implement hundreds of threads during a single launch of the software modules300.

The nested multi-threading controller module306may manage and control the nested multi-threading operations of the software modules300. Within a thread spawned by the multi-threading controller module304, the nested multi-threading controller module308may generate nested child threads. For example, the multi-threading controller module304may spawn a first thread to query an on-board administrator module in a blade server enclosure, and the nested multi-threading controller module306may spawn a set of child threads nested within the first thread to push firmware upgrades to each blade server within the blade server enclosure.

The retrieved results parser module308may receive files from the queried network resources and parse the received files to extract relevant information. For example, the received files may be space delimited text containing information such as operation status, hardware serial number, assembly date, firmware version and date, and/or any other attributes of a respective network resource. The retrieved results parser module308may parse and extract the aforementioned and other information from the received files. Furthermore, multi-threading controller module304may execute multiple instances of the retrieved results parser module308such that multiple received files are parsed contemporaneously for a faster and more efficient operation.

The snapshot view file generator module310may integrate information extracted from each of the received files to generate a snapshot view file. In other words, the snapshot view file may contain information on a plurality of network resources. In some instances, the snapshot view file generator module310may generate the snapshot view file in hypertext markup language (HTML) format such that a user may open the snapshot view file using a web-browser.

The snapshot view file updater module312may update a snapshot view file based new queries from the query generator module302and new files received from the respective hardware resources. For example, a user may request a new snapshot view with updates to a subset of network resources in an existing snapshot view. The snapshot view file updater module312may invoke the query generator module302in association with the multi-threading controller module304to run queries on the requested subset of network resources to update the existing snapshot view. In some embodiments, the snapshot view file updater module312may run periodic queries on one or more network resources in an existing snapshot view based on the request from the user.

It should be understood that the respective functionality of the aforementioned software modules is merely illustrative and similar functionality may be achieved by different set of software modules. Furthermore, the software modules described herein may achieve alternative and additional functionality, which should be considered to be within the scope of this disclosure.

FIG. 4Ashows a flow diagram400aof a method for generating a snapshot display, according to an illustrative embodiment. Although multiple computers may execute the steps of the method shown in the flow diagram400a, this description details, for brevity, a computer executing the steps of the method. It should also be understood that the method steps described below are merely illustrative and additional, alternate, and/or lesser number of steps should be considered to be within the scope of this disclosure.

The method may begin at step402, where the computer may receive a request to generate a snapshot display of an enterprise network architecture. In some instances, the request may be in the form of an executable binary file placed for automated runs in a computer. For example, if the computer is a Windows machine, a user (such as a system administrator) may place the executable binary file in the Task Scheduler for automated runs. In other instances, the user may manually launch the executable binary file from a command line interface (CLI) such as Windows Powershell, command line shell, Apple Commandshell, and Linux Bash. In yet other instances, the user may click on an icon displayed by the computer in a graphical user interface (GUI), and, the computer may execute the executable binary in response to receiving the click.

In addition to launching the executable binary file by any of the aforementioned actions, the user may also provide a list of internet protocol (IP) addresses for each of the network resource that the computer has to retrieve status information and other information. In other words, the list of IP addresses may identify network resources to be queried by the computer. Non-limiting examples of the network resource include blade servers, server enclosures, rack servers, routers, switches, and any other type of network device. The IP address is merely illustrative, and the user may provide other types of address used to access the respective network resource such as machine access code (MAC). The user may provide the list of IP address or any other type of address in a text file that the executable binary file may access. In some instances, the addresses may be hardcoded in the executable binary file itself. In other instances, the computer may receive the addresses during the runtime of the executable binary file. The aforementioned techniques of the computer receiving the list of IP addresses or any other type of addresses are merely illustrative and other techniques should be considered within the scope of this disclosure.

In step404, the computer may launch a thread of operation for each identified network resource. In other words, the executable binary file may be configured as a multi-threader capable of collecting data from multiple network resources simultaneously. For each thread of operation, the computer may query a respective network resource for status and other information and retrieve the queried information. Using the multi-threaded application, the computer may contemporaneously pipe in data from multiple network resources to ensure that there are updates in a reasonable amount of time.

In step406, the computer may query a respective network resource for each thread of operation. The query may be a direct query, with the computer querying the bios or firmware of the network resource directly as opposed to the conventional systems that query a third party database. Each query may be based upon the request received in step402. For example, a first request may be for a first set of attributes and a second request may be for a second set of attributes, and the corresponding queries in step406may be for the first and second set of attributes, respectively. In addition to a query, the computer may also transmit the respective login credentials to the network resources for the network resources to authenticate the computer and accept the query. The login credentials may have been provided by or setup in conjunction with a respective vendor of each network resource. In some embodiments, the computer may store the login credentials in a database such that the user may not have to provide login credentials for subsequent runs. The login credentials may include, for example, a username and password. The username and password may be associated with a single sign-on (SSO) mechanism, e.g., the computer may use the username and password to sign on to an universal on-board administrator thereby gaining access to all the network resources controlled by the universal on-board administrator.

In step408, the computer may retrieve information from a respective network resource for each thread of operation. The network resource may transmit a file to the computer containing the information. For example, if the computer has executed 100 threads of operation to query 100 network resources in step406, the computer may receive 100 files containing respective queried information. In some embodiments, the files may be text files containing requested information in a space delimited or comma delimited format. From the received files, the computer may parse and store the relevant information of the network resources merging them to a single report file available to the end user. The computer may then automatically delete the multiple received files from remote network resources.

In some embodiments, one or more network resources may be redundant. For instance, an enclosure may have two management modules for each of active and standby mode, wherein each mode may be associated with an IP address. The computer may first query IP address with the active mode and if the query times out, may query the IP address with the standby mode. Such query will provide a notification to the computer whether a failover has occurred in the enclosure.

In step410, the computer may generate a snapshot view file based on the retrieved information. In some embodiments, the computer may generate the snapshot view file in a hypertext markup language (HTML) format such that a user may access the snapshot file through a web-browser. The computer may integrate the retrieved the information and add HTML tags to generate the HTML file. The HTML file described herein is merely exemplary, and the computer may generate the snapshot view file in other computer readable format.

In step412, the computer may transmit the snapshot view file or a link thereto to one or more user devices. In some embodiments, the computer may upload the snapshot view file to a SharePoint server and generate a link to the file. The computer may then transmit the link to the user devices by forms of communications such as e-mail, instant messaging or any other form of electronic communication. In other embodiments, the computer may transmit the snapshot view file itself to the user devices for the user devices to store the snapshot view file locally.

In step414, a user device may display the snapshot view in response to a respective user selecting the transmitted file or link. For the snapshot view file in HTML format, a user can select a link to the file or select the file and the user device may display the snapshot view in a web browser such as Internet Explorer, Mozilla Firefox, Google Chrome, and/or Safari. In other words, the user device does not require a specialized application for the snapshot view and use an existing web browser.

FIG. 4Bshows a flow diagram400bof a method for generating a snapshot display in a server processing and active state mode, according to an illustrative embodiment. Although multiple computers may execute the steps of the method shown in the flow diagram400b, this description details, for brevity, a computer executing the steps of the method. It should also be understood that the method steps described below are merely illustrative and additional, alternate, and/or lesser number of steps should be considered to be within the scope of this disclosure. In a server processing mode, the computer may scan (e.g., query and retrieve information from) standalone servers and blade servers that can be scanned directly without going through an on-board administrator module.

The method may begin at step416, where the computer may receive a request to generate a snapshot display of an enterprise network in an active state mode. In some instances, the request may be in the form of an executable binary file placed for automated runs in a computer. For example, if the computer is a Windows machine, a user (such as a system administrator) may place the executable binary file in the Task Scheduler for automated runs. In other instances, the user may manually launch the executable binary file from a command line interface (CLI) such as Windows Powershell, command line shell, Apple Commandshell, and Linux Bash. In yet other instances, the user may click on an icon displayed by the computer in a graphical user interface (GUI), and, the computer may execute the executable binary in response to receiving the click.

In addition to launching the executable binary file by any of the aforementioned actions, the user may also provide a list of internet protocol (IP) addresses for each of the servers that the computer has to retrieve status information and other information (also referred to as scan). The list of IP addresses may identify the servers to be queried by the computer. Non-limiting examples of the servers include blade servers, server enclosures, rack servers, routers, switches, and any other type of network device. The IP address is merely illustrative, and the user may provide other types of address used to access the respective network resource such as machine access code (MAC). The user may provide the list of IP address or any other type of address in a text file that the executable binary file may access. In some instances, the addresses may be hardcoded in the executable binary file itself. In other instances, the computer may receive the addresses during the runtime of the executable binary file. The aforementioned techniques of the computer receiving the list of IP addresses or any other type of addresses are merely illustrative and other techniques should be considered within the scope of this disclosure.

Being in the active state mode, the computer may also retrieve one or more firmware binary files to be pushed to the servers that are scanned by the computer. In some instances, the firmware binary files may be stored locally within the computer. In other instances, the firmware binary files may be stored remotely that the computer has to access using one or more remote file access/transfer protocols. The user may provide the addresses of the one or more firmware binary files to the executable binary file. The addresses may in the aforementioned text file that the executable binary file may access. In some instances, the addresses may be hardcoded within the executable binary file itself. It should be understood that these techniques of accessing the addresses of the firmware binary files are merely illustrative and other techniques should be considered within the scope of this disclosure.

In step418, the computer may launch a thread of operation for each identified server. The executable binary file may be therefore configured as a multi-threader capable of collecting data from multiple servers simultaneously. For each thread of operation, the computer may query a respective server for status and other information and retrieve the queried information (also referred to as scanning). Using the multi-threaded application, the computer may contemporaneously pipe in data from multiple servers to ensure that there are updates in a reasonable amount of time.

In step420, the computer may retrieve information from a respective server for each thread of operation. To retrieve the information, the computer may formulate a query for the respective server. The query may be a direct query, with the computer querying the bios or firmware of the server directly as opposed to the conventional systems that query a third party database. Each query may be based upon the request received in step416. For example, a first request may be for a first set of attributes and a second request may be for a second set of attributes, and the corresponding queries may be for the first and second set of attributes, respectively. In addition to the query, the computer may also transmit the respective login credentials to the servers for the servers to authenticate the computer and accept the query. The login credentials may have been provided by or setup in conjunction with a respective vendor of each server. In some embodiments, the computer may store the login credentials in a database such that the user may not have to provide login credentials for subsequent runs. The login credentials may include, for example, a username and password.

In response to the query, the computer may retrieve information from a respective server for each thread of operation. The server may transmit a file to the computer containing the information. For example, if the computer has executed 100 threads of operation to query 100 servers, the computer may receive 100 files containing respective queried information. In some embodiments, the files may be text files containing requested information in a space delimited or comma delimited format. From the received files, the computer may parse and store the relevant information of the servers merging them to a single report file available to the end user. The computer may then automatically delete the multiple received files from the servers.

In step422, the computer may push a firmware binary to respective server for each thread of operation. The computer may determine if the one or more firmware binary files are compatible with one or more servers. If a firmware binary file is compatible with a server and the computer has permission to upgrade the firmware of the server, the computer the corresponding firmware binary file to the server. The functionality of pushing the firmware binary file to the respective server enables snapshot display generation process to be active collecting data and pushing firmware upgrades at the same time.

In step424, the computer may generate a snapshot view file based on the retrieved information. In some embodiments, the computer may generate the snapshot view file in a hypertext markup language (HTML) format such that a user may access the snapshot file through a web-browser. The computer may integrate the retrieved the information and add HTML tags to generate the HTML file. The HTML file described herein is merely exemplary, and the computer may generate the snapshot view file in other computer readable format.

In step426, the computer may transmit the snapshot view file or a link thereto to one or more user devices. In some embodiments, the computer may upload the snapshot view file to a SharePoint server and generate a link to the file. The computer may then transmit the link to the user devices by forms of communications such as e-mail, instant messaging or any other form of electronic communication. In other embodiments, the computer may transmit the snapshot view file itself to the user devices for the user devices to store the snapshot view file locally.

In step428, a user device may display the snapshot view in response to a respective user selecting the transmitted file or link. For the snapshot view file in HTML format, a user can select a link to the file or select the file and the user device may display the snapshot view in a web browser such as Internet Explorer, Mozilla Firefox, Google Chrome, and/or Safari. The user device therefore may not require a specialized application for the snapshot view and use an existing web browser.

FIG. 4Cshows a flow diagram400cof a method for generating a snapshot display in a blade enclosure processing and active state mode, according to an illustrative embodiment. Although multiple computers may execute the steps of the method shown in the flow diagram400c, this description details, for brevity, a computer executing the steps of the method. It should also be understood that the method steps described below are merely illustrative and additional, alternate, and/or lesser number of steps should be considered to be within the scope of this disclosure. In a blade enclosure processing mode, the computer may scan (e.g., query and retrieve information from) blade enclosure containing a plurality of blade servers and also push firmware binaries to the blade servers using nested multi-threader operations.

The method may begin at step430, where the computer may receive a request to generate a snapshot display of an enterprise network in an active state mode. In some instances, the request may be in the form of an executable binary file placed for automated runs in a computer. For example, if the computer is a Windows machine, a user (such as a system administrator) may place the executable binary file in the Task Scheduler for automated runs. In other instances, the user may manually launch the executable binary file from a command line interface (CLI) such as Windows Powershell, command line shell, Apple Commandshell, and Linux Bash. In yet other instances, the user may click on an icon displayed by the computer in a graphical user interface (GUI), and, the computer may execute the executable binary in response to receiving the click.

In addition to launching the executable binary file by any of the aforementioned actions, the user may also provide a list of internet protocol (IP) addresses for each of the on-board administrator modules that the computer has to retrieve status information and other information (also referred to as scan). The list of IP addresses may identify the on-board administrator modules to be queried by the computer. The IP address is merely illustrative, and the user may provide other types of address used to access the respective on-board administrator module such as machine access code (MAC). The user may provide the list of IP address or any other type of address in a text file that the executable binary file may access. In some instances, the addresses may be hardcoded in the executable binary file itself. In other instances, the computer may receive the addresses during the runtime of the executable binary file. The aforementioned techniques of the computer receiving the list of IP addresses or any other type of addresses are merely illustrative and other techniques should be considered within the scope of this disclosure.

Being in the active state mode, the computer may also retrieve one or more firmware binary files to be pushed to the blade servers associated with the on-board administrator modules that are scanned by the computer. In some instances, the firmware binary files may be stored locally within the computer. In other instances, the firmware binary files may be stored remotely that the computer has to access using one or more remote file access/transfer protocols. The user may provide the addresses of the one or more firmware binary files to the executable binary file. The addresses may in the aforementioned text file that the executable binary file may access. In some instances, the addresses may be hardcoded within the executable binary file itself. It should be understood that these techniques of accessing the addresses of the firmware binary files are merely illustrative and other techniques should be considered within the scope of this disclosure.

In step432, the computer may launch a parent thread of operation (also referred to as parent thread) for each identified on-board administrator module. The executable binary file may be therefore configured as a multi-threader capable of collecting data from multiple administrator modules simultaneously. For each thread of operation, the computer may query a respective on-board administrator module for status and other information for each of the blade servers associated with the on-board administrator module and retrieve the queried information (also referred to as scanning). Using the multi-threaded application, the computer may contemporaneously pipe in data from multiple blade enclosures to ensure that there are updates in a reasonable amount of time.

In step434, the computer may retrieve information from a respective on-board administrator module for each parent thread. To retrieve the information, the computer may formulate a query for the respective on-board administrator module. The query may be a direct query, with the computer querying the bios or firmware of the on-board administrator module directly as opposed to the conventional systems that query a third party database. Each query may be based upon the request received in step430. For example, a first request may be for a first set of attributes and a second request may be for a second set of attributes, and the corresponding queries may be for the first and second set of attributes, respectively. In addition to the query, the computer may also transmit the respective login credentials to the on-board administrator modules for the on-board administrator modules to authenticate the computer and accept the query. The login credentials may have been provided by or setup in conjunction with a respective vendor of each server. In some embodiments, the computer may store the login credentials in a database such that the user may not have to provide login credentials for subsequent runs. The login credentials may include, for example, a username and password. The username and password may be associated with a single sign-on (SSO) mechanism, e.g., the computer may use the username and password to sign on to an on-board administrator module thereby gaining access to all the blade servers controlled by the on-board administrator.

In response to the query, the computer may retrieve information from a respective on-board administrator module for each parent thread. The on-board administrator may transmit a file to the computer containing the information. For example, if the computer has executed 100 threads of operation to query 100 on-board administrator modules, the computer may receive 100 files containing respective queried information. In some embodiments, the files may be text files containing requested information in a space delimited or comma delimited format. From the received files, the computer may parse and store the relevant information of the on-board administrator modules merging them to a single report file available to the end user. The computer may then automatically delete the multiple received files from the on-board administrator modules.

In step436, the computer may spawn a nested child threads within each parent thread. As described above, the computer may use a parent thread to scan an on-board administrator module of a blade server enclosure. The blade server enclosure may include a plurality of blade servers and the computer may spawn child threads for each blade servers. Within the parent thread, the computer may execute the child threads concurrently. The child threads therefore may be nested within the parent thread.

In step440, the computer may push a firmware binary to respective blade server during each child thread. The computer may determine if the one or more firmware binary files are compatible with one or more blade servers. If a firmware binary file is compatible with a blade server and the computer has permission to upgrade the firmware of the blade server, the computer the corresponding firmware binary file to the blade server. The functionality of pushing the firmware binary file to the respective blade server enables snapshot display generation process to be active collecting data and pushing firmware upgrades at the same time. Furthermore, the nested multi-threader enables the firmware upgrades to be performed quickly and efficiently.

In step442, the computer may generate a snapshot view file based on the retrieved information. In some embodiments, the computer may generate the snapshot view file in a hypertext markup language (HTML) format such that a user may access the snapshot file through a web-browser. The computer may integrate the retrieved the information and add HTML tags to generate the HTML file. The HTML file described herein is merely exemplary, and the computer may generate the snapshot view file in other computer readable format.

In step444, the computer may transmit the snapshot view file or a link thereto to one or more user devices. In some embodiments, the computer may upload the snapshot view file to a SharePoint server and generate a link to the file. The computer may then transmit the link to the user devices by forms of communications such as e-mail, instant messaging or any other form of electronic communication. In other embodiments, the computer may transmit the snapshot view file itself to the user devices for the user devices to store the snapshot view file locally.

In step446, a user device may display the snapshot view in response to a respective user selecting the transmitted file or link. For the snapshot view file in HTML format, a user can select a link to the file or select the file and the user device may display the snapshot view in a web browser such as Internet Explorer, Mozilla Firefox, Google Chrome, and/or Safari. The user device therefore may not require a specialized application for the snapshot view and use an existing web browser.

FIG. 5shows a graphical user interface (GUI)500with a first illustrative snapshot view501of network infrastructure. The snapshot view501may have been generated by a computer using the illustrative methods and illustrative principles described herein. The snapshot view501, as shown herein, may display a summary of various network resources in the network infrastructure. For instance, the snapshot view501may display an enclosure report summary502of a remote enclosure within the network infrastructure. The enclosure report summary502may include enclosures status column504displaying the number of the enclosures that were processed for snapshot view501. The enclosures status column504may further display, out of the processed enclosures, the number of healthy enclosures, the number of degraded enclosures, and/or the number of outdated on-board administrators. The enclosure report summary502may further include an enclosures currency tab506displaying the currency (age) of the enclosures. As an illustration, the currency tab506may display the number of enclosures that are more than seven years old, the number of enclosures that are six to seven years old, and/or the number of enclosures with no asset tags. The enclosure report summary502may further include a Scan IP summary column508displaying the summary of the internet protocol (IP) addresses that were scan by the computer. For instance, the scan IP summary508may display the total number of IP addresses that were scanned, the number of IP addresses that denied access to the computer, the number of IP addresses for which one or more requests by the computer were timed out, the number of IP addresses that were not associated with an on-board administrator (OA), and/or the number of IP addresses associated with unknown destination or devices. The snapshot view501may further display a blade server report summary510. The blade server report summary510may display a blade servers status column512displaying the respective numbers of processed blade servers, healthy blade servers, degraded or failed blade servers, and/or unconfigured blade servers. The blade server report summary510may further display a blade servers currency column514displaying the currency statuses of the processed blade servers. As shown herein, the blade servers currency column514may include the respective numbers of powered on blade servers that are more than five years old, powered off blade servers that are more than five years old, blade servers that are four to five years old, and/or blade servers with no asset tag. The blade server report summary510may further include blade servers platforms column516displaying the respective numbers of blade servers associated with respective hardware platform. For example, a hardware platform may be the generation/version of the server hardware/software. The blade servers platform column516may further include the number of blade servers without platform information.

FIG. 6shows a graphical user interface (GUI)600with a second illustrative snapshot view601of network infrastructure. The snapshot view601may have been generated by a computer using the illustrative methods and illustrative principles described herein. The snapshot view601may display the statuses of and information about blade servers within server enclosure (also referred to as enclosure). For instance, the snapshot view601may display the scan address602of the enclosure. In some embodiments, the scan address602of the enclosure may be the internet protocol (IP) address of the enclosure. The snapshot view601may further display an enclosure configuration604pane containing name606, model608, part number610, serial number612, asset tag614, and/or assembly date613of the enclosure. The snapshot display may further display an enclosure state pane616containing overall status618, health status620, power status624, and/or cooling status626. The snapshot view601may further include on-board administrator (OA) module information column628containing information such as a version number of a respective OA. The snapshot view601may also include a virtual connect modules information column630containing information such as the model number of the virtual connect modules.

The snapshot view601may include a blade servers configuration pane631containing information of a plurality of blade servers included within the enclosure described above. Within the blade servers configuration pane502, the snapshot view601may display bay number column632showing a sequence number for a bay containing a respective blade server. The snapshot view601may further display a state column632showing the state of the respective blade server. As shown, the state may be “Powered On” for a blade server that is powered on, “Powered Off” for a blade server that is powered off and “Empty” for a bay that does not contain a blade server. A model column636may show the model number of the respective blade server. A RAM column638may show the size of the random access memory (RAM) of the respective blade server. A health column640may show the health status of the blade server. Illustrative health statuses may include “OK” for a healthy blade server and “Degraded” for a blade server with degraded health status. A serial number column642may show the hardware serial number of the respective blade server. An asset tag column644may show the asset tag for the respective blade server. An assembled date column646may show the assembly date (currency information) of the respective blade server. A server management firmware version column648may show the version of the server management firmware of the respective blade server. A server management firm update date column650may show the update date of the server management firmware for the respective blade server. A read only memory (ROM) firmware column652may show the version name and the latest update date of the respective blade server. A server name column654may show the name of the respective blade server.

FIG. 7shows a GUI700with an illustrative snapshot view701generated by a snapshot engine in a server processing mode. The snapshot engine may include one or more software modules being executed by a computer. The snapshot view701may show various hardware information, firmware information, and software information about various servers scanned by a snapshot engine. For example, the snapshot view701may include a scan address column702showing internet protocol (IP) addresses of a plurality of servers (4 servers, as shown). A state column704may show the operating state of the corresponding server. A server, for example, may be “Powered On,” “Powered Off,” or “Inaccessible.” A model column706may show a models of the servers scanned by the snapshot engine. For instance, a server may have alphanumeric code as a shorthand for the configuration and its generation number. A serial number column708may show the serial numbers for the plurality of servers. An asset tag column710may show the asset tag of the servers. The asset tags may be provided by an entity/person that owns the network infrastructure containing the servers. A health column712may indicate the health status of the servers. For example, a server may have a health status of “OK,” “Degraded,” or “Not Available (n/a).” An assembled column714may show the assembly dates for the servers. An assembly date for a server may be referred to as currency information for the server. A server firmware column716may show the current versions of the corresponding firmware in the servers. A ROM firmware column718may show versions (or currency dates) of the corresponding ROM firmware in the servers. A server name column720may show the names of the servers. A name of the server may be provided by a manufacturer or the entity/person that owns the servers. An operating system (OS) column722may show the operating systems (e.g., Windows Server) installed in the servers.

FIG. 8shows a GUI800with an illustrative snapshot view801generated by a snapshot engine in a server processing and an active state mode. The snapshot engine may include one or more software modules being executed by a computer. In the server processing mode, the snapshot engine may scan multiple standalone servers (e.g., rack servers). In the active mode, the snapshot engine may push firmware binaries to the servers being scanned. The snapshot engine may retrieve the firmware binaries from local files stored within the computer that is executing the snapshot engine. Alternatively, the snapshot engine may retrieve the firmware binaries from remote files stored at remote locations. The snapshot engine may operate executing multi-threader operations to generate the snapshot view801.

The snapshot view801may include tabular data with multiple columns showing hardware, firmware, and software information of the servers scanned by the snapshot engine. For example, a scan address column802may show the IP addresses of the servers scanned by the snapshot engine. A state column804may show the operating states of the servers scanned by the snapshot engine. An operating state may be (1) “Powered Off” for servers that are powered off, (2) “Powered On” for servers that are powered on, (3) “Access Denied” for the servers that the snapshot engine did not have access to, and (4) “No Connection” for the servers that the snapshot engine could not connect. A model column806may show the models of the servers. A serial number column808shows the serial numbers for the servers. An asset tag column810may show the asset tags for the servers. The asset tags may be assigned to the servers by the persons/entities that own the servers. An asset tag may be “Unknown” for a server that is powered off and may be “Not Available (n/a)” for a server that the snapshot engine could not access. A health column812may show the health statuses of the servers. For example, a server may have an “OK” health status indicating that there are no operational problems with the server. Fort the servers that the snapshot engine could not access, the health status may be “Not Available (n/a).” An assembly date column814may indicate the dates of assembly for the servers. A date of assembly for a server may be referred to as currency information about the server. A server firmware version column816may show the versions of the firmware corresponding to the servers. In addition to showing the current firmware version, the snapshot engine may also show upgrades to the firmware in the active mode of operation shown inFIG. 8. A ROM firmware column818may show the versions of the ROM firmware of the corresponding servers. A server name column820may show the name of the server. An operating system column822may show the operating systems of the servers.

FIG. 9shows a GUI900with an illustrative snapshot view901generated by a snapshot engine in a blade enclosure processing and an active state mode. The snapshot engine may include one or more software modules being executed by a computer. In a blade-enclosure processing mode, the snapshot engine may access an on-board administrator module of a blade enclosure to scan information about the blade servers from the on-board administrator module. In the active mode, the snapshot engine may push firmware binaries to the blade servers through the on-board administrator module. To push the firmware binaries, the snapshot engine may perform nested multi-threader operations.

The snapshot view901generated by the snapshot engine may show information about the hardware, software, firmware, and upgrades to the firmware by the snapshot engine. In an enclosure report summary903, the snapshot view901may show an enclosure status column904displaying the number of the enclosures that were processed for snapshot view901. The enclosures status column904may further display, out of the processed enclosures, the number of healthy enclosures, the number of degraded enclosures, and/or the number of outdated on-board administrators. The enclosure report summary903may further include an enclosures currency column904displaying the currency (age) of the enclosures. As an illustration, the enclosures currency column904may display the number of enclosures that are more than seven years old, the number of enclosures that are six to seven years old, and/or the number of enclosures with no asset tags. The enclosure report summary903may further include a Scan IP summary column906displaying the summary of the IP addresses that were scanned by the snapshot engine. For instance, the scan IP summary906may display the total number of IP addresses that were scanned, the number of IP addresses that denied access to the snapshot engine, the number of IP addresses for which one or more requests by the snapshot engine were timed out, the number of IP addresses that were not associated with the on-board administrator module, and/or the number of IP addresses associated with unknown destination or devices.

The snapshot view901may further display a blade server report summary908. The blade server report summary908may display a blade servers status column910displaying the respective numbers of processed blade servers, healthy blade servers, degraded or failed blade servers, and/or unconfigured blade servers. The blade server report summary908may further display a blade servers currency column912displaying the currency statuses of the processed blade servers. As shown herein, the blade servers currency column912may include the respective numbers of powered on blade servers that are more than five years old, powered off blade servers that are more than five years old, blade servers that are four to five years old, and/or blade servers with no asset tag. The blade server report summary908may further include blade servers platforms column914displaying the respective numbers of blade servers associated with respective hardware platform. For example, a hardware platform may be the generation/version of the server hardware/software. The blade servers platform column914may further include the number of blade servers without platform information.

The snapshot view901may display the statuses of and information about blade servers within the enclosure. For instance, the snapshot view901may display the scan address916of the enclosure. In some embodiments, the scan address916of the enclosure may be the internet protocol (IP) address of the enclosure. The snapshot view901may further display an enclosure configuration918pane containing name922, model924, part number926, serial number928, asset tag930, and/or assembly date932of the enclosure. The snapshot view901may further display an enclosure state pane920containing overall status934, health status936, power status940, and/or cooling status942. The snapshot view901may further include on-board administrator module information column944containing information such as a version number of a respective on-board administrator module. The snapshot view901may also include a virtual connect modules information column946containing information such as the model number of the virtual connect modules.

The snapshot view901may include a blade servers configuration pane948containing information of a plurality of blade servers included within the enclosure described above. Within the blade servers configuration pane948, the snapshot view901may display bay number column950showing a sequence number for a bay containing a respective blade server. The snapshot view901may further display a state column952showing the state of the respective blade server. As shown, the state may be “Powered On” for a blade server that is powered on, “Powered Off” for a blade server that is powered off and “Empty” for a bay that does not contain a blade server. A model column954may show the model number of the respective blade server. A RAM column956may show the size of the random access memory (RAM) of the respective blade server. A health column958may show the health status of the blade server. Illustrative health statuses may include “OK” for a healthy blade server and “Degraded” for a blade server with degraded health status. A serial number column960may show the hardware serial number of the respective blade server. An asset tag column962may show the asset tag for the respective blade server. An assembled date column964may show the assembly date (currency information) of the respective blade server. A server management firmware version column966may show the version of the server management firmware of the respective blade server. A server management firm update date column968may show the update date of the server management firmware for the respective blade server. The updates may have been performed by the snapshot engine by executing nested multi-threader operations in an active state mode. A read only memory (ROM) firmware column970may show the version name and the latest update date of the respective blade server. A server name column972may show the name of the respective blade server.

The illustrative snapshot views501,601,801,901may show uniform resource locators (URLs) for active on-board administrators (OAs) such that the user may open the respective web page from the snapshot views501,601,801,901. The snapshot views501,601,801,901may further incorporate pseudo 3D features for a better user experience. In some embodiments, one or more snapshot view files generating the snapshot views501,601,801,901may be in HTML5 format and configured to be displayed in web browsers such as Chrome, Internet Explorer, Firefox, Safari, and web browsers running in mobile devices.

The illustrative snapshot views501,601,801,901may color code the display to indicate the health of the respective network resource. To indicate the health state of an enclosure, the snapshot views501,601,801,901may display informational status, such as indicating that the enclosure is turned off, in a neutral color such as white or beige. The snapshot views501,601,801,901may indicate that the enclosure has no issues in green, warnings in yellow, and critical condition in red. For the currency of server blades, the snapshot views501,601,801,901may display informational status in beige, an alert status in pink, and a warning status in yellow. It should be understood that these color codes are merely illustrative, and other color codes may be used without deviating from the scope of this disclosure.

The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of the various embodiments must be performed in the order presented. The steps in the foregoing embodiments may be performed in any order. Words such as “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Although process flow diagrams may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, and the like. When a process corresponds to a function, the process termination may correspond to a return of the function to a calling function or a main function.