Parallels Agent is not a single executable or a single process. It is a combination of processes, communicating with each other by means of sockets or pipes. The core entities of Agent architecture are operators and directors.
A director is responsible for message routing inside Agent. It determines which internal Agent component should serve an incoming request and to which client a particular reply should be sent.
An operator is a process that is forked or spawned from a director process. There's a set of Agent operators, each of which provides a specific type of functionality. For example, the vzaenvm
operator provides the functionality for managing Virtuozzo Containers, the vzarelocator
operator provides the functionality for migrating a Container, etc. The diagram above illustrates the Agent component structure. A client connects to Agent through the operator Connection (a special operator, which is created for every client connection and which serves as gateway between a client and a director). The client sends XML messages to the director. Based on the information provided in the request, the director determines the operator that the message should be sent to for processing. The operator processes the message, takes the appropriate action, and generates a reply which is then routed back to the client.
The operators are divided into four major groups:
Parallels Agent API consists of interfaces that provide access to their respective server-side operators. There's one API interface for each operator. In this guide, we will discuss some of the most commonly used operators and interfaces. For the complete list of interfaces and the functionality that they provide, see the Parallels Agent XML Reference guide.