Controller
The controller process is the central management system for the vmPRO appliance. All aspects of vmPRO operation or communication pass through the controller. It provides the following functions:
- It acts as the control center for vmPRO, hence the name controller. In this role it interacts with other programs by responding to requests to its web based API (the GUI) or via panshell. It also services requests for datastore_fs, vm_proxy_fs, files_fs, import_fs, recovery_fs and recovery_fs_files. In addition, multiple vmPRO appliances in a group configuration communicate using the controller.
- It maintains the state of the vmPRO appliance. It does this by creating, maintaining and using mySQL databases and SQLite database. The main vmPRO database is a mySQL database named ‘pancetera’. This database contains tables for user configurations, discovered information such as hypervisor and virtual machine info following a discovery command, appliance state such as previously run commands and past/present alerts. Other mySQL databases are named ‘smr_N’ where N is an index number that starts at zero. There is one of these databases for each SmartMotion target storage location that is configured on the vmPRO appliance. The database will contain a detailed SmartMotion history for that storage location.|
The SQLite database is the appliance registry, and it is a single table of key/value pairs that includes appliance state information and configuration settings that are not stored in the ‘pancetera’ mySQL database. Most vmPRO registry values are set automatically or through GUI configuration, however there are some customizations that require changing registry value via panshell command later. For more information about registry commands, refer to the vmPRO Engineering wiki: http://panwiki.quantum.com/index.php/Registry_keys 
- It provides monitoring functions for vmPRO. Controller uses several threads to monitor vmPRO and respond to requests. It provides the following monitoring functions for the appliance:
- Alert Monitoring (AlertMonitor) - checks for alert conditions, and posts new alerts or removes them accordingly. New alerts and removal are posted in the GUI.
- Command Monitoring (CommandMonitorThread) – It monitors vmPRO’s internal command table and deletes entries older than 48 hours. It also times out commands that have been running for more than 6 hours. The command monitoring function also monitors the command table for new entries and executes a process to run each new command found. Additionally, it keeps track of running commands and logs when they finish.
- Hypervisor Monitoring (HypervisorMonitor) – The controller has a thread that runs only on a master or standalone vmPRO node that monitors each hypervisor. This thread will execute a script per hypervisor to discover hypervisor and virtual machine information. Once the full discovery is done the script will wait for update from the hypervisor and then send the update to the controller. This how the event driven discovery mechanism of vmPRO works. If you add a new VM to a discovered hypervisor that VM immediately shows in the list of exported VMs in the vmPRO export filesystem.
- License Monitoring (LicenseUpdateThread) – The controller has a thread that updates vmPRO licenses by connecting to customer’s support site account and downloading their licenses or accepting licenses manually via the GUI. This same thread monitors an appliance for license compliance.
- Multinode monitoring (MNCommandMonitor) – In a vmPRO group configuration, this thread runs on nodes to check for commands to run from the master. It also copies registry settings from the master to the nodes every 4 hours.
- Performance monitoring (PerfMonitor) - this thread of the controller captures vmPRO performance statistics.
- SmartMotion monitoring (SMMonitor) - this thread checks the consistency between SmartMotion databases and their mounted locations and updates the database if necessary.
Here is a Controller block diagram:

Troubleshooting the Controller
Controller logs information and errors to /var/log/messages. These messages generally include the file and line number where the message was generated, and in error conditions often provide a traceback which can be used to diagnose the issue.
Starting with vmPRO version 3.0, you can set the threshold for messages logged to /var/log/messages via the vmPRO registry. The command in panshell to set it would look like:
reg set logging.controller.level 10|20|30|40|50
where 10=debug (everything), 20=info, 30=warning, 40=error, and 50=critical. By default, the level is 20 (info and higher). Changes to the value changes it for the running controller (no restart needed).
Interacting with and Configuring vmPRO
There are a number of ways for a user or customer to interact with and configure the vmPRO appliance. These include the semi-graphical or cursor based interface, seen on the VM console when appliance is booted up, the GUI and Panshell. All three methods will configure or modify certain aspects of vmPRO.
Most customers will primarily use the semi-graphic interface and the GUI to configure the vmPRO appliance. Panshell can be used to configure and troubleshoot vmPRO but usually under the guidance of a support engineer. All input to any of the three interfaces is internally sent to the controller to perform the update or action.
Semi-Graphical Interface (Cursor Based UI)
This interface seen on VM Console of a vSphere client GUI is the first UI a customer sees after deploying (installing) and booting up a vmPRO appliance. Upon initial boot up the console will show the appliance as localhost and direct the user to an https (IP address) for GUI administration of the appliance, if vmPRO was able to obtain an address through dhcp.

To perform initial setup of vmPRO hit the <Enter> key on your keyboard and provide the default vmPRO username/password combination to get into the setup screen (shown below). For 2.3.x, the usernam/password combination is sysadmin/Pancetera,. For 3.0, the usernam/password combination is sysadmin/sysadmin).

The setup screen allows you to configure hostname, search domains, network (including multihome), DNS server, proxy setting, group mode for vmPRO. Once the network setting is completed you can then connect via the GUI to perform additional configuration. There is no troubleshooting option here. If a network configuration setting is done improperly one simply need to redo it.
What's Next?
The GUI >