Vendor non-specific computer server software system

A computer server software system implemented on a computing device comprises a bare metal automation interface, a request processor, a scheduler, a vendor non-specific bare metal interface, and an orchestration engine. The bare metal automation interface is configured to receive requests for configuration of one or more of a plurality of servers. The request processor is configured to receive the requests from the bare metal automation interface and to forward the requests. The scheduler is configured to receive instructions from a runtime environment in which the computer server software system operates and forward the instructions. The vendor non-specific bare metal interface is configured to interface with a plurality of vendor-specific server interfaces, wherein each vendor-specific server interface communicates with a server from the specific vendor. The orchestration engine is configured to execute a workflow for the requests from the request processor and for the instructions from the scheduler.

BACKGROUND OF THE INVENTION

Field of the Invention

Embodiments of the current invention relate to software interface that configures computer servers.

Description of the Related Art

Large organizations, such as insurance providers and financial institutions, often have a very large volume of data to store and process. These organizations may also have memory needs to support software and hardware based applications and products. Furthermore, each organization may have a variety of types of data to store, such as email, client personal data, client records, billing, etc., as well as a variety of software applications or products. The default medium for these types of needs is a computer server which includes a plurality of storage, processing, network, and memory devices. These devices, such as hard disk drives, processing units, memory, and network cards, may be housed in a single machine case or multiple machines, which may be mounted in racks. An organization may have these types of machines, servers, or storage devices that are produced by multiple vendors. Each vendor may have a specific protocol or interface for the manner in which these machines or servers can be managed, making it time-consuming and tedious for computer system administrators to set up and keep track of these systems.

SUMMARY OF THE INVENTION

Embodiments of the current invention solve the above-mentioned problems and provide a distinct advance in the art of automatic configuration of data storage systems including a plurality of computer servers. One embodiment provides a computer server software system that is implemented on a computing device. The system comprises a bare metal automation interface, a request processor, a scheduler, a vendor non-specific bare metal interface, and an orchestration engine. The bare metal automation interface is configured to receive requests for configuration of one or more of a plurality of servers. The request processor is configured to receive the requests from the bare metal automation interface and to forward the requests. The scheduler is configured to receive instructions from a runtime environment in which the computer server software system operates and forward the instructions. The vendor non-specific bare metal interface is configured to interface with a plurality of vendor-specific server interfaces, wherein each vendor-specific server interface communicates with a server from the specific vendor. The orchestration engine is configured to execute a workflow for the requests from the request processor and for the instructions from the scheduler.

Another embodiment provides a computer server software system that is implemented on a computing device. The system comprises a bare metal automation interface, a request processor, a scheduler, a vendor non-specific bare metal interface, and an orchestration engine. The bare metal automation interface is configured to receive requests for configuration of one or more of a plurality of servers. The requests are received from a user using a web browser and other systems using a representational state transfer and simple object access protocol interface. The request processor is configured to receive the requests from the bare metal automation interface and to forward the requests. The scheduler is configured to receive instructions from a runtime environment in which the computer server software system operates and forward the instructions. The vendor non-specific bare metal interface is configured to interface with a plurality of vendor-specific server interfaces, wherein each vendor-specific server interface communicates with a server from the specific vendor. The vendor non-specific bare metal interface is also configured to receive vendor-non-specific commands intended for a server and to transmit corresponding vendor-specific commands to the vendor-specific server interface for the server. The orchestration engine is configured to execute a workflow for the requests from the request processor and for the instructions from the scheduler.

Yet another embodiment provides a computer server software system that is implemented on a computing device. The system comprises a bare metal automation interface, a request processor, a scheduler, an alert and notification generator, an authentication and authorization interface, a persistence storage interface, a GIT interface, a vendor non-specific bare metal interface, and an orchestration engine. The bare metal automation interface is configured to receive requests for configuration of one or more of a plurality of servers. The request processor is configured to receive the requests from the bare metal automation interface and to forward the requests. The scheduler is configured to receive instructions from a runtime environment in which the computer server software system operates and forward the instructions. The alert and notification generator is configured to notify users of a status of a request or to alert system administrators if an error occurs. The authentication and authorization interface is configured to forward a user's credentials to a lightweight directory access protocol device or an active directory device. The persistence storage interface is configured to forward data regarding the servers to a bare metal asset information database. The GIT interface configured to forward a user's credentials to a GIT system. The vendor non-specific bare metal interface is configured to interface with a plurality of vendor-specific server interfaces, wherein each vendor-specific server interface communicates with a server from the specific vendor. The orchestration engine is configured to execute a workflow for the requests from the request processor and for the instructions from the scheduler.

The drawing figures do not limit the current invention to the specific embodiments disclosed and described herein. While the drawings do not necessarily provide exact dimensions or tolerances for the illustrated components or structures, the drawings are to scale as examples of certain embodiments with respect to the relationships between the components of the structures illustrated in the drawings.

DETAILED DESCRIPTION OF THE EMBODIMENTS

A vendor non-specific computer server software system10, constructed in accordance with various embodiments of the current invention, is shown inFIG. 1and broadly comprises a bare metal automation interface12, a request processor14, a scheduler16, an alert and notification generator18, a vendor non-specific bare metal interface20, an authentication and authorization interface22, a persistence storage interface24, a GIT interface26, and an orchestration engine28. The system10may receive input from a web browser30and a representational state transfer (REST)/simple object access protocol (SOAP) interface32. The system10may provide output to a lightweight directory access protocol (LDAP) device34, an active directory device36, a bare metal asset information database38, a GIT system40, and a plurality of vendor-specific server interfaces42. The vendor-specific server interfaces42communicate with a plurality of servers44or storage devices. The vendor non-specific computer server software system10may be implemented or executed on a computing device46.

The web browser30generally provides user access to the vendor non-specific computer server software system10, wherein users of the system10may be managers or administrators of the data from various groups within an organization, such as an insurance provider or a financial institution. Each group may want to access, read, or write data to the servers44. The web browser30, as is commonly known, accesses information on the web. In this instance, the web browser30accesses the vendor non-specific computer server software system10and presents users with a user interface48that allows the user to submit requests for services or select the actions and features of the system10.

The REST/SOAP interface32generally provides communication with other systems executing programs and applications using architectures, such as the REST architecture, and protocols, such as the SOAP protocol. The other systems may want to access, read, or write data to the servers44as a result of on-demand or automated processes executed by the systems.

The LDAP device34and the active directory device36generally provide directory information services, such as a central place to store usernames and passwords. The LDAP device34and the active directory device36may allow various applications and processes to validate users.

The bare metal asset information database38generally stores information related to the servers44or data storage devices, along with network components and the like. The information may include names of servers44or other equipment, identifiers such as barcodes, radio frequency identifiers (RFIDs), unique identifiers, and the like.

The GIT system40generally provides version control for tracking changes in computer files and coordinating work on those files among multiple people.

Each vendor-specific server interface42is a software interface that is provided to enable communication with the server(s)44from a particular vendor. The organization in which the vendor non-specific computer server software system10is utilized may have servers44from a plurality of different vendors. Each vendor-specific server interface42may include specific protocols, rules, or formats about the way in which data is stored on and read from the associated server(s)44.

Each server44generally retains electronic data and responds to requests to retrieve data as well as to store data. The server44may function as an application server, a database server, a file server, a mail server, a web server, or the like. The server44may also include processors, memory storage such as optical drives, hard disk drives, rack-mount drives, blade drives, a cabinet, and the like, and transceiver components that receive communication from the vendor non-specific computer server software system10.

The computing device46generally implements or executes the vendor non-specific computer server software system10and may be embodied by a desktop computer, a workstation computer, a server computer, or the like. In some embodiments, the computing device46may be retained in one of the servers44. The computing device46broadly comprises a memory element50and a processing element52. The computing device46may also comprise a display, a keyboard, a mouse, or other user interface components, wired and/or wireless communication element, and other common components—none of which is discussed in detail herein.

The memory element50may be embodied by devices or components that store data in general, and digital or binary data in particular, and may include exemplary electronic hardware data storage devices or components such as read-only memory (ROM), programmable ROM, erasable programmable ROM, random-access memory (RAM) such as static RAM (SRAM) or dynamic RAM (DRAM), cache memory, hard disks, floppy disks, optical disks, flash memory, thumb drives, universal serial bus (USB) drives, or the like, or combinations thereof. In some embodiments, the memory element50may be embedded in, or packaged in the same package as, the processing element52. The memory element50may include, or may constitute, a “computer-readable medium”. The memory element50may store the instructions, code, code statements, code segments, software, firmware, programs, applications, apps, services, daemons, or the like that are executed by the processing element52. The memory element50may also store settings, data, documents, sound files, photographs, movies, images, databases, and the like.

The processing element52may comprise one or more processors. The processing element52may include electronic hardware components such as microprocessors (single-core or multi-core), microcontrollers, digital signal processors (DSPs), field-programmable gate arrays (FPGAs), analog and/or digital application-specific integrated circuits (ASICs), or the like, or combinations thereof. The processing element52may generally execute, process, or run instructions, code, code segments, code statements, software, firmware, programs, applications, apps, processes, services, daemons, or the like. The processing element52may also include hardware components such as registers, finite-state machines, sequential and combinational logic, and other electronic circuits that can perform the functions necessary for the operation of the current invention. In certain embodiments, the processing element52may include multiple computational components and functional blocks that are packaged separately but function as a single unit. The processing element52may be in communication with the other electronic components through serial or parallel links that include universal busses, address busses, data busses, control lines, and the like.

The processing element52may be operable, configured, or programmed to perform the following functions by utilizing hardware, software, firmware, or combinations thereof. The processing element52of the computing device46may implement or execute the components of the vendor non-specific computer server software system10as described in more detail below.

The bare metal automation interface12provides an application programming interface that receives requests and data from the web browser30and the REST/SOAP interface32and forwards the request and/or data to the appropriate component within the vendor non-specific computer server software system10. For example, requests received by the bare metal automation interface12are forwarded to the request processor14. The requests may include a particular configuration or setup for one or more of the servers44. The data may include names of configuration types and/or identifiers of servers44to be configured, as well as credential information, including a user name and a password and/or tokens, regarding the user making the request. The bare metal automation interface12may utilize REST, SOAP, secure shell (SSH), and the like to communicate with the other components.

The request processor14receives and handles requests from the bare metal automation interface12. Upon receipt of a request, the request processor14analyzes the request and instructs the appropriate system component(s) to process the request. For example, if a user wants to configure one of the servers44, he may submit a request through the web browser30to configure one of the servers44for a particular purpose. The user provides the specifics of the configuration based on business requirements. The request processor14instructs the orchestration engine to perform the server44setup, including an appropriate workflow with appropriate tasks, based on the specifics of the request.

The scheduler16receives instructions from a runtime environment in which the vendor non-specific computer server software system10operates. The scheduler16hands off execution of the instructions to the orchestration engine28.

The alert and notification generator18handles processing or sending alerts and notifications in case of any system wide or specific messages to the users of the system10. For example, when a user requests a process to be performed, the alert and notification generator18sends an alert to the user when the process is complete. Alternatively, the alert and notification generator18sends an alert to system administrators and/or the user if an error occurred or a problem was encountered during the execution of processes.

The vendor non-specific bare metal interface20provides communication to the vendor-specific server interfaces42. The vendor non-specific bare metal interface20may utilize SSH, REST APIs, or vendor specific protocols. The vendor non-specific bare metal interface20provides encapsulation of data or objects and a layer of abstraction to the rest of the components of the vendor non-specific computer server software system10so that these components do not need to be tightly coupled with the requirements of any one vendor-specific server interface42. For example, the vendor non-specific bare metal interface20receives generalized (vendor-non-specific) commands or instructions from the other components, such as the orchestration engine28, that are intended for the server44from a particular vendor. The vendor non-specific bare metal interface20then transmits corresponding vendor-specific commands or instructions to the vendor-specific server interface42for the server44.

The authentication and authorization interface22forwards user credentials, such as a user name and a password and/or tokens to the LDAP device34and the active directory device36. The user credentials are received from the bare metal automation interface12.

The persistence storage interface24forwards data to the bare metal asset information database38. The data may include information related to the servers44or other hosts or center for data storage, security roles and capabilities, user preferences, and other information regarding the dependency of the vendor non-specific computer server software system10.

The GIT interface26forwards data to version-controlled data storage systems such as the GIT system40. The data may include user credentials, such as a user name and a password and/or tokens, and information in formats such as extensible markup language (XML) and comma separated values (CSV).

The orchestration engine28generally executes the workflow for one or more requests or tasks. For example, the orchestration engine28may perform the steps necessary to apply specified configurations on a selected server44, apply a network interface card configuration, assign an Internet protocol (IP) address, configure gateways and other components, remove default administrative users, apply a specific security configuration, update firmware to a desired level, instruct the alert and notification generator18to notify users with the relevant information etc. The orchestration engine28may execute the requests or tasks in a given or specified order. Once all the tasks are completed, the user will be notified by the alert and notification generator18about the outcome of the request. The orchestration engine28may also store information regarding the execution of each task which in turn can be used to troubleshoot in case of failures.

Referring toFIGS. 3-7, a plurality of screen shots are shown, taken from images of a user interface48which is presented to users in the web browser30. The user interface48allows users to request various functions and input data. The user interface48also provides output to users, such as the results of the requested activities.FIG. 3illustrates a first plurality of icons, each of which allows the user to request an activity, such as a configuration, to input data, or to manage information or options.FIG. 4illustrates a second plurality of icons, each of which allows the user to request an activity, such as a configuration, or to retrieve log data.FIG. 5illustrates a list of filters that can be applied to a requested configuration.FIG. 6illustrates a log of the results of a requested configuration.FIG. 7illustrates a log of particular activities associated with a requested configuration.

ADDITIONAL CONSIDERATIONS

In various embodiments, computer hardware, such as a processing element, may be implemented as special purpose or as general purpose. For example, the processing element may comprise dedicated circuitry or logic that is permanently configured, such as an application-specific integrated circuit (ASIC), or indefinitely configured, such as an FPGA, to perform certain operations. The processing element may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement the processing element as special purpose, in dedicated and permanently configured circuitry, or as general purpose (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the term “processing element” or equivalents should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. Considering embodiments in which the processing element is temporarily configured (e.g., programmed), each of the processing elements need not be configured or instantiated at any one instance in time. For example, where the processing element comprises a general-purpose processor configured using software, the general-purpose processor may be configured as respective different processing elements at different times. Software may accordingly configure the processing element to constitute a particular hardware configuration at one instance of time and to constitute a different hardware configuration at a different instance of time.

Similarly, the methods or routines described herein may be at least partially processing element-implemented. For example, at least some of the operations of a method may be performed by one or more processing elements or processing element-implemented hardware modules. The performance of certain of the operations may be distributed among the one or more processing elements, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processing elements may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processing elements may be distributed across a number of locations.