The present disclosure relates in general to the field of computing systems, and more specifically, to automation of software tools in computing systems.
Modern software systems often include multiple programs or applications working together to accomplish a task or deliver a result. An enterprise can maintain several such systems. Further, development times for new software releases are shrinking allowing releases to be deployed to update or supplement a system on an ever-increasing basis. Some enterprises release, patch, or otherwise modify their software code dozens of times per week. Further, enterprises can maintain multiple servers to host their software applications, such as multiple web servers deployed to host a particular web application. As updates to software and new software are released, deployment of the software can involve coordinating the deployment across multiple machines in potentially multiple geographical locations.
According to one aspect of the present disclosure, a request to upgrade one or more agents hosted on a particular computing system may be received and an upgrade package may be identified that includes a set of upgrade files. The upgrade package may be determined to include a manager upgrade file for a service manager hosted on the particular computing system, where the one or more agents are child processes of the service manager. The agent upgrade files may be accessed from the upgrade package and upgrades of the agents are performed using the agent upgrade files. An upgrade of the service manager may also be performed using the manager upgrade file based on the request to upgrade, where the upgrade of the service manager is performed with the upgrades of the one or more agents.
Like reference numbers and designations in the various drawings indicate like elements.
As will be appreciated by one skilled in the art, aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely in hardware, entirely software (including firmware, resident software, micro-code, etc.) or combining software and hardware implementations that may all generally be referred to herein as a “circuit,” “ module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, CII, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computing environment or offered as a service such as a Software as a Service (SaaS).
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatuses (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable instruction execution apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring now to
In some implementations, agents (e.g., 125a-d) may be provisioned on host systems (e.g., 110, 115, 120, 140) to provide a hook for the automation engine to control operating system tasks or other operations and functionality provided on a host system through an operating system, hypervisor, application, or other software program, which may facilitate a workflow automation, release automation, service orchestration, or other software automation implementation. An automation engine may communicate with various agents deployed within host systems (e.g., 110, 115, 120, 140), for instance, through communication processes implementing the automation engine. In some implementations, communication processes may support and implement network communications (e.g., over one or more networks (e.g., 130)) between the computing system(s) (e.g., 105) hosting the work processes and other components of the automation engine. Further, in some implementations, user interfaces (e.g., 150a-c) may be defined in connection with the automation engine, which may be accessed on one or more user computing devices (e.g., 135, 140, 145), for instance, as a web-based or browser-implemented user interface. Users may provide inputs and define parameters for an automation implemented by the automation engine through these UIs (e.g., 150a-c). The inputs may be routed to one or more of the work processes of the automation engine using the communication processes of the automation engine, to allow for the definition of user-customized automations and even the definition of new or customized automations provided through the automation engine, among other examples.
In general, “servers,” “clients,” “computing devices,” “network elements,” “database systems,” “user devices,” and “systems,” etc. (e.g., 105, 110, 115, 120, 135, 140, 145, etc.) in example computing environment 100, can include electronic computing devices operable to receive, transmit, process, store, or manage data and information associated with the computing environment 100. As used in this document, the term “computer,” “processor,” “processor device,” or “processing device” is intended to encompass any suitable processing apparatus. For example, elements shown as single devices within the computing environment 100 may be implemented using a plurality of computing devices and processors, such as server pools including multiple server computers. Further, any, all, or some of the computing devices may be adapted to execute any operating system, including Linux, UNIX, Microsoft Windows, Apple OS, Apple iOS, Google Android, Windows Server, zOS, etc., as well as virtual machines and emulators adapted to virtualize execution of a particular operating system, as well as container-based operating environments (e.g., Docker containers, Kubernetes containers, etc.), and customized and proprietary operating systems among other examples.
Further, servers, clients, network elements, systems, and computing devices (e.g., 105, 110, 115, 120, 135, 140, 145, etc.) can each include one or more processors, computer-readable memory, and one or more interfaces, among other features and hardware. Servers can include any suitable software component or module, or computing device(s) capable of hosting and/or serving software applications and services, including distributed, enterprise, or cloud-based software applications, data, and services. For instance, in some implementations, an automation engine system 105, application server (e.g., 110, 115), host server 120, or other sub-system of computing environment 100 can be at least partially (or wholly) cloud-implemented, web-based, or distributed to remotely host, serve, or otherwise manage data, software services and applications interfacing, coordinating with, dependent on, or used by other services and devices in environment 100. In some instances, a server, system, subsystem, or computing device can be implemented as some combination of devices that can be hosted on a common computing system, server, server pool, or cloud computing environment and share computing resources, including shared memory, processors, and interfaces.
While
Through the advent of cloud and distributed computing architectures, together with agile software development paradigms, the management and implementation of software systems by enterprises has become increasingly complex. For instance, as computing systems migrate to cloud or hybrid cloud environments, managing workflows and deployment of new software may be more complex and costly without information technology automation. Further, given the rapid pace of software innovation, versioning, and updates, the pace at which software is released and orchestrated has likewise increased. For instance, in the case of release automation, releases and updates may be frequent, complex, and expensive to deploy in modern software systems. Managing the potentially thousands of software releases, even relating to a single entity's (e.g., enterprise's) system, can be difficult and exact costs on the very operability of the system. Such releases include both releases of new software systems as well as updates or patches to existing software. Valuable information technology (IT) personnel and resources are dedicated within some enterprises to developing and carrying-out these deployments. Traditionally, human users are employed throughout the process of the deployment. Further, human IT resources are not only expensive, but error prone, resulting in some deployments which are incorrect and that may need to be re-deployed, further consuming time and personnel resources. Additionally, some systems may be sensitive to down periods that may be required in order to allow deployment of new software releases on the system, among other complexities, costs, and variables. Similar complexities and costs are introduced when considering the orchestration of new services, managing workflows in transactions to be handled and developed using a software system, among other example considerations.
Automation tools and processes may be purpose built to handle common automation tasks, however, given the diversity and continuing evolution of enterprises' software systems, specialized, purpose-built automation tools are often ill-equipped to adapt to the ever-changing landscape of modern software products and systems. In some implementations, a flexible, scalable, and configurable automation engine may be provided, which is capable of being used, reused, and repurposed, dynamically, to provide a single automation platform capable of handling and be extended to handle a wide and diverse array of automation workloads and tasks. At least some of the systems described in the present disclosure, such as the systems of
For instance, in the example of
Further, one of the work processes implemented in the automation engine may be designated as the “primary” work process. A primary work process, in some examples, may be designated at the launch of the automation engine (e.g., based on the work process being the first to start) and this primary work process may be assigned special tasks based on its designation as the primary process, such as central work process tasks. In some cases, the primary work process may be tasked with autonomously assigning roles to additional work processes as they are started within the automation engine. In some implementations, work processes may be assigned roles to filter the types of tasks the respective work process is to handle. For instance, some work processes may be assigned (e.g., by the primary work process) to perform an output server role to handle outputs such as storing log messages and reports generated in the automation engine within a database of the automation engine. Another example server role which may be assigned to work processes may be a resource calculation role to perform tasks such as calculating calendar objects, perform deadlock avoidance, and other tasks, which involve calculations, among other examples. In some implementations, separate queues may be maintained in the automation engine database for each server role, such that tasks of a given work process are extracted from the specific queue corresponding to the work process's assigned role, among other example features and implementations.
Communication processes (e.g., 210) are additional server processes running on one or more computing systems (e.g., 105) implementing an instance of an automation engine. Communication processes 210 may handle communication between agents (e.g., 125a-c)), user interfaces (e.g., 150a), and work processes (e.g., 205) in connection with the automation engine. Communication processes hold the connections to the agents and the user interfaces. In some implementations, all communication between agents and UIs may be exclusively performed through the communication processes 210. In some implementations, port numbers of the systems hosting the automation engine may be assigned to respective work processes and communication processes. All of the server processes (e.g., work processes 205 and communication processes 210) may communicate with each other. Such an architecture can ensure flexibility and fault tolerance, allowing remaining processes to assume the queued tasks of another process in the event the other process fails, among other example features and advantages.
As noted above, a communication process can connect with agents (e.g., 125a-c) and UIs (e.g., 150a) to facilitate the communication between the agents and UIs and various work processes (e.g., 205) of an automation engine implementation. Agents may be implemented on target systems (e.g., 110, 115, 120) to expose functionality of an operating system (e.g., 250), application (e.g., 245b), virtual machine manager (e.g., 254), or other software program to the automation engine. Accordingly, agents may be implemented according to the specific features of the target software component (e.g., 245b, 250, 254, etc.). As an example, different agents may be provided for instrumentation on any one of a variety of different operating systems, such as agents specific to Windows, Linux, iOS, zOS, etc., among other examples. In some implementations, agents may initiate connections with one of the communication processes provided in an automation engine. For instance, an agent may open a TCP/IP connection with one of the communication processes of the automation engine. In some implementations, each agent may connect to a single one of the communication processes, while each communication process may be connected to multiple agents and/or user interfaces. Communications between the agent and a communication process may be encrypted.
As discussed in the examples above, a collection of work and communication processes may be provided in an automation engine system. In some cases, it may be advantageous to host the work processes 205 and communication processes 210 on multiple nodes or computing devices, as this can enhance fault tolerance of the automation engine and boost efficiency and reliability through the distribution of these processes over several computers. In some implementations, a potentially unlimited number and variety of work and communication processes may be implemented in a single automation engine instance. Further, by adding processes it is possible to adjust to growing use of the automation engine system. For instance, should a heavy workload exist or be introduced due to the number of logged-on agents and/or UIs, the number of communication processes can be increased. Likewise, should the number of automation engine system tasks become too burdensome, the number of work processes can be increased, among other example advantages.
As further illustrated in
In some implementations, communication between server processes of an automation engine (e.g., its component work processes 205 and communication processes 210)) may be facilitated through message queues 230. Message queues (as well as other data used to implement an automation engine instance (e.g., 232, 235, 236, 240, etc.)) may be hosted in a database implemented in connection with the automation engine and hosted on one of the computing systems of automation engine system 105. Message queues (e.g., 230) may be implemented as database tables, through which a work or communication process may post a message that may then be read and processed by another work or communication process, thereby facilitating communication between the processes. Additional queues may also be provided which contain the tasks that are to be accessed by server processes and performed in connection with an automation engine implementation. In some implementations, an automation engine instance may have multiple message queues. Depending on their types, tasks are lined up in the corresponding queue. If a work process is momentarily idle or finished with its current tasks, it will take the next queued task and process it. The execution of the task can lead to a new task for the work queue to be then attached to the current tasks. Some tasks may be dedicated tasks, which are allowed to only be processed by the primary work process. Accordingly, in such implementations, a primary work process, upon completing a preceding task, may first check (in a corresponding queue) whether any special work tasks are waiting in the queue before turning to more general work queues for generally work tasks shared with the other work processes. or this reason, the “freed-up” primary work process always checks first if any of these special work processes are present in the queue. Communication processes may utilize communication queues for communication tasks to be performed by communication processes to collect or send data from/to agents and/or UIs associated with the automation engine. In some instances, if a work process tasks involves the passing of information to agents or UIs, the work process may, as part of the performance of its task, write a new communication queue to the respective communication queue in order to prompt the communication process's involvement in the passing of this information, among other examples.
As noted above, an automation engine provided through an automation engine system 105 may be used to automate activities on various target systems (e.g., 110, 115, 120). For instance, application servers (e.g., 110, 115) hosting various applications and other software tools and programs (e.g., 245a-b) may be target systems of an automation engine. For instance, tasks automated by an automation engine may automate deployment of a new or updated version of an application or system of interoperating programs on one or more computing systems (e.g., 110, 115, 120). In other examples, a workflow involving one or more multiple different cooperating applications (e.g., 245a-c) may be automated may be automated using an automation engine, among other examples. The automation engine may interface with agents to cause functionality present on the target system to be triggered and automated according to defined automation engine tasks and jobs. In some instances, agents (e.g., 125a) may be present on an operating system (e.g., 250) of the host system (e.g., 110), on which a target application (e.g., 245a) runs. In other instances, the agent (e.g., 125b) may be present on the application (e.g., 245b) itself. During the automation of a workflow, the automation engine may communicate with and cause actions to be performed on multiple different applications (e.g., 245a-c) and host systems (e.g., 110, 115, 120) through corresponding agents (e.g., 125a-c). In automation jobs involving service orchestration or release automation, agents (e.g., 125a, c) may be used to access functionality and resources of the system that are used to deploy, install, configure, load, or otherwise automate deployment or installation of a program on one or more target systems. As an example, an application may be automatically deployed on a virtual machine using an example automation engine, through the automation engine's communication with an agent (e.g., 125c) provided on a virtual machine manager (VMM) or hypervisor (e.g., 254) that is to automatically build the host virtual machine (e.g., 260) upon which the application (e.g., 245c) is to be installed and run at the direction of the automation engine, among other examples.
In some implementations, a service manager process (e.g., 255a-c) may be present on any host system (e.g., 110, 115, 120, etc.) that is to host one or more agents (e.g., 125a-c) that are to interface and interoperate with (and at the direction) of an automation engine instance. In some implementations, a service manager (e.g., 255a-c) may manage and govern the activation and deactivation of agents (e.g., 125a-c) on the host (e.g., 110, 115, 120). Further, in cases where one or more processes (e.g., communication processes, work processes, etc.) implementing the automation engine are hosted in a distributed manner on various machines (e.g., 120), a service manager (e.g., 255c) may likewise manage and serve as the parent process of these processes (e.g., work processes 205b). As shown in the example of
Turning to
It should be appreciated that an automation engine may include any potential number of one or more work processes and communication processes. As the workload to be handled by the automation engine or the general complexity of the automation engine implementation increases, additional work and/or communication processes and corresponding message queue tables may be added to expand the bandwidth and flexibility of the automation engine. Likewise, the scale and scope of an automation engine may also be reduced, by removing work and/or communication processes, among other examples. As an illustrative example of a job, which may be performed by an example automation engine, a workflow involving an example customer relationship management (CRM) platform may be automated using an example automation engine, such as shown in the example of
In one example, when certain weather conditions are detected or predicted, an example workflow can cause a social media management system to automatically generate a promotional posting on one or more social media platforms to promote an offering appropriate for the detected weather (e.g., an ice cream promotion on a hot day). For instance, a first one of the work processes (e.g., 205b) may perform a task to cause a weather forecast to be performed using a first target system. The performance of this task may involve causing a communication process (e.g., 210a) interfacing with the target system through a corresponding agent (e.g., 125a) to send a communication to the agent to engage with the target system and cause the target system to generate forecast data. This forecast data may be passed back to the automation engine by the agent 125 through the communication process 210a, and the forecast data may be provided to a message queue and cause a task to be performed by one of the work processes to access and process the forecast data returned from the target system. For instance, work process 205a may be free to handle the task of processing the forecast data, with the task involving determining a weather event from the forecast data. In one example, a work process 205a may determine that the forecast data evidences a warm weather event. The detection of a warm weather event may cause a task to be queued to trigger the social media promotion on a social media system. The workflow definition may embody the logic, executed by the work processes to determine an action, result, or next task to execute based on results of the preceding task. In one example, a free work process may access the queued task and communicate an instruction to launch the social media promotion through a communication process (e.g., 210b) interfacing with the social media system through a corresponding agent (e.g., 125b), among other example implementations and use cases. Indeed, it should be appreciated that potentially any combination of the provided work processes (e.g., 205a-c) in the automation engine may perform various tasks within a single automation job (e.g., a workflow automation job, service orchestration job, release automation job, etc.) based on the availability of the various work processes. Further, an automation engine may simultaneously handle multiple different automation jobs using the same collection of work processes and communication processes 210a-b, balancing work of the multiple jobs between the collection of processes in the automation engine, among other example implementations.
In some implementations, when an agent is launched on a particular target or host system for operation with a particular automation engine, the agent may attempt to identify and connect to the automation engine through one of the communication processes provided in the automation engine. For instance, a service manager utility present on a particular host computer may select a particular agent implementation and designate this agent for use with a particular one of potentially many different automation engines. The agent, too, may be selected from one of potentially many different agent implementations offering various functionality and/or compatibility with various different operating system, software containers, applications, and the like. The service manager may then cause the agent to be loaded and run on the particular host machine. In some implementations, without a connection to a communication process of the selected particular automation engine, the agent is unable to interface and operate with the particular automation engine. A load balancing algorithm may be employed to govern how agents connect to which communication processes within the corresponding automation engine, among other example features.
Turning to
The automation engine database 415 may further include upgrade packages (e.g., 405) for use in upgrading components of the automation engine in a centralized manner. For instance, each upgrade package 405 may include a number of files corresponding to the upgrade of a particular component, or instances of a particular component. For instance, an agent may be developed for use with an automation engine instance and instances of the agent may be developed for each one of multiple different operating systems and environments, which may be used at various host systems. In this manner, an agent enabling certain functionality that may be leveraged by a work process in various workflows of a particular automation engine instance may be potentially launched on any one of the multiple different operating systems to perform corresponding actions utilizing resources and functionality of the corresponding operating system. In some examples an upgrade package may include the upgrade files to enable the updating of any one of the operating-system-specific implementations of the agent. Upgrade packages may also include upgrade files for multiple different types of agents, as well as for the operating-system-specific implementations of each agent type. In this manner, an upgrade to a code or feature present in multiple different agent types may be rolled out through a single package, which may be used to upgrade any one of the agent implementations to include the updated features.
In the example of
An agent, when connected to the automation engine (and thereby the automation engine database 415) may retrieve corresponding files from the database 415 and perform a self-upgrade using the files. Users may provide inputs (e.g., through a service manager on the host) to dictate the version of the agent, which the user or administrator wishes to be utilized (e.g., to rollback to an earlier, more stable version of the agent), among other examples. In some implementations, an agent, upon initiating communication with the automation engine may query upgrade records of the automation engine to detect whether any relevant upgrades are available for the agent (e.g., in a corresponding upgrade package 405). In other cases, the service manager may be used to detect the presence of upgrade packages associated with any of the agents or processes implemented using the service manager. In cases, where multiple agents are present on the same host and an upgrade package includes upgrade files relevant to the multiple agents, the upgrade package may be accessed, such that all of the agents are upgraded concurrently in accordance with the upgrade package.
While upgrade packages (e.g., 405) may be utilized to keep agents up to date and to centrally organize upgrades of agents of a particular automation engine, regardless of where they are hosted (e.g., using automation engine database 415), circumstances may also call for features, functions, and aspects of service managers (e.g., 255a-c) associated with the automation engine to be upgraded from time to time. In one example, upgrade packages may include not only the agent upgrade files but also upgrade files for the upgrade of service managers (e.g., 255a-c) of the automation engine. In some implementations, when an agent at a particular host system attempts to access an upgrade file from an upgrade package, the service manager may monitor the access attempt to determine opportunistically whether the same upgrade package includes upgrade files for the service manager. Should service manager upgrade files be detected in the upgrade package the service manager may automatically extract the files and perform a self-upgrade with the agent(s) on the host system using the service manager upgrade files.
Turning to
As shown in the example of
In the particular example of
In some implementations, an automation engine system may include an upgrade manager utility or tool (e.g., 520), which may be executable to load and define new upgrade packages on the automation engine database 415. Upgrades may be provided, in some implementations, by a vendor associated with the automation engine, or may be custom developed by the enterprise on whose system the automation engine is to run, among other examples. The upgrade manager 520 may be utilized to cause upgrades of selected sets or subsets of agents within the automation engine system to be requested and triggered (e.g., such as discussed in the example of
In some implementations, the performance of a self-upgrade by an agent may include the agent accessing its corresponding upgrade file and loading, from the upgrade package, all needed upgrade resources for the upgrade. The agent may then replace its existing binaries with the new ones contained in the upgrade file. After the binaries have been replaced successfully, the agent shuts itself down and may provide a specific return code or other data to indicate that the upgrade is complete. In cases where multiple agents on a host are upgrading from the same upgrade package, each of the agents may perform similar steps and shut down upon completion of the binary replacement. The service manager on the host may detect the return code and then restarts the newly upgraded agent(s). In cases where the service manager is upgraded in connection with a centralized agent upgrade, the service manager may first complete its upgrade (which, in some cases, may also involve a restart of the service manager or even the host itself) before it attempts to restart the upgraded agent(s) based on this return code. With the upgraded agent(s) now restarted by the service manager, the upgraded agent(s) may each reconnect to the automation engine (e.g., through a respective one of the communication processes of the automation engine) with its new version.
Other processes of an automation engine may also be upgraded, and such upgrades may be automated using computing processes and tools of the automation engine system. In some implementations, automation engine processes (e.g., communication processes and work processes) of an automation engine instance, may be updated with zero downtime in the operation of the system. For instance, turning to the examples of
When the automation engine is to be upgrade, the upgrade process may begin, as illustrated in
Turning to
Continuing with the example of
In some implementations, a zero-downtime upgrade of an automation engine, its work processes, communication processes, and database, may result in the restarting and reconnection of various agents (e.g., 125) connected to and co-functioning with this automation engine. In some cases, such migrations from one version of a communication process to another may result in multiple concurrent restarts of corresponding agents in connection with the reconnection of these agents. In such cases, service manager mapping data may be utilized to identify which agents are children to which service managers, thereby directing the corresponding service managers to restart the proper agents on their corresponding host systems. Additionally, in some implementations, when agents are restarted in this manner, opportunities for agent upgrades may likewise be identified. Indeed, agent upgrade packages (which may include service manager upgrades) may be rolled out and offered in connection with an automation engine upgrade. For instance, an upgrade of the automation engine upgrade may include loading new upgrade packages into the automation database and an upgrade manager may send requests to service managers and/or agents to cause corresponding upgrades to be performed at the agents in connection with the automation engine upgrade. For instance, when agents are disconnected from a prior version of a communication process, a request to update the agents may be pushed to cause the agents to perform a self-upgrade before being restarted and connecting to the corresponding new versions of the communication process provided during a zero-downtime upgrade of the automation engine, among other example cases.
The flowcharts and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various aspects of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of any means or step plus function elements in the claims below are intended to include any disclosed structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated.
This application claims benefit to U.S. Provisional Patent Application Ser. No. 62/739,188, filed Sep. 29, 2018 and incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
62739188 | Sep 2018 | US |