Virtuozzo Application Platform 5.5.1/2/3

This document is preliminary and subject to change.

In this document, you will find all of the new features, enhancements and visible changes included to the PaaS 5.5.1/2/3 releases.

Templates Auto-Clustering (5.5.3)

An automated configuration of separate nodes into the reliable cluster for a set of the managed templatesLearn more

Two-Factor Authentication

An additional security layer for PaaS account, to ensure environments safetyLearn more

UI for Access Tokens

A user interface for the convenient personal access tokens management directly in the dashboardLearn more

Go Archive Deployment

Implemented automated projects deployment from archives for the Go programming languageLearn more

Cloud Scripting Engine Version Comparison (5.5.3)

Added placeholder for platform CS engine version and function placeholder for two CS versions comparisonLearn more

Prohibit Deployment for Layer (5.5.3)

A possibility to forbid deployment into specific layer(s) with the isDeploySupport node group propertyLearn more

Cloud Scripting Transfer Events

The new onBeforeConfirmTransfer and onAfterConfirmTransfer events added to Cloud ScriptingLearn more

Node Group Scaling Mode

A possibility to set the stateless (simultaneous) or stateful (sequential) scaling mode for environment layersLearn more

API for Scaled Nodes Management

Refactored API methods for scaled nodes management to reduce the number of used parametersLearn more

HelloWorld Package

Adjusted the universal HelloWorld package to ensure successful installation into all supported application serversLearn more

Engine Versions Grouping

Simplified engine versions selection in topology wizard grouping them by type and major releaseLearn more

Collaboration Adjustments

Hiding the inappropriate options of the environment owner during environment creation as the collaboratorLearn more

Cloud Scripting Console Optimization

Improved auto-refresh functionality for the Cloud Scripting console to simplify logs analysisLearn more

Software Stack Versions

Actualized list of supported OS templates and software stack versionsLearn more

Bug Fixes

List of fixes applied to the platform starting from the current releaseLearn more

Templates Auto-Clustering (5.5.3)

It is a well-known fact that clusterization is virtually an obligatory requirement for production solutions to ensure applications and services high availability. However, the configuration of a reliable cluster is not a trivial task even for the experienced developers. So, within the present 5.5.3 PaaS release, the platform introduces the out-of-box clusterization of the managed templates to significantly decrease the time-to-market for users' projects.

The Auto-Clustering feature by the platform can be enabled through the same-named switcher in the central part of the topology wizard (if available for the selected stack). Herewith, upon enabling, some additional cluster customization options may be added to the wizard. For example, for the MySQL database stack, it is possible to choose the preferred clusterization scheme (i.e. Master-Slave, Master-Master, Single MGR or Multi MGR): managed templates auto-clustering

Currently, auto-clustering is available for the following software templates (more stacks will be supported by this feature in the future):

  • MySQL, MariaDB 10 and Couchbase databases
  • GlassFish, Payara and WildFly application servers

Based on the particular cluster requirement some topology restriction may be applied (e.g. the minimum/maximum number of nodes, scaling mode, etc.). The similar validation can be implemented for any JPS package through Cloud Scripting:

1
2
3
4
validation:
   minCount: 2
   maxCount: 3
   scalingMode: stateful

More info

Back to the top

Two-Factor Authentication

In order to massively increase your account safety, the platform implemented a possibility to set up access based on the two-factor authentication (2FA). As an additional layer of security alongside with your username/password credentials, the platform allows using access codes generated in the authentication application on your mobile phone (e.g. Google Authenticator). In such a way with 2FA enabled, even if someone gets your password, it won’t be enough to connect to or manage your account.
The two-factor authentication can be enabled from a new Account section added to the Settings (accessible from the panel at the top of the dashboard). Here, you can manage your 2FA (set up, view recovery codes and disable) and change a regular account password. account two-factor authentication

To successfully Set Up Two-Factor Authentication click the appropriate button and, after confirming the password, follow the displayed instruction to interconnect your authentication application and account (either scan the QR code or provide the required details manually). After the authenticator is configured, it will return a six-digit code, which should be provided in the dashboard to proceed. Next, you’ll be shown the recovery codes, which can be used as a one-time alternative to the authentication codes generated by the mobile app.

Note: Ensure your recovery codes are saved, as otherwise, in case of your phone unavailability, you won’t be able to connect to your account. Also, they are the only option to restore access upon device loss.
For accounts with configured 2FA, you can View Recovery Codes with the same-named button as well as generate a set of new codes (the old ones will no longer be viable) with the appropriate link. Also, it is possible to Disable Two-Factor Authentication, e.g. to rebind to another device. Both these actions require a password confirmation to be performed. Be aware, that in order to manage accounts with 2FA via API, the access tokens should be used.

More info

Back to the top

UI for Access Tokens

Personal Access Tokens are the alternative way to authenticate API requests in the platform. Also, for the accounts with the two-factor authentication enabled, this option allows to avoid the complexity of the authenticator app code provisioning in custom scripts. So, within the 5.5.1 platform release, the appropriate subsection for Access Tokens is added to the Settings tab (accessible from the panel at the top of the dashboard).

Here, you can see the list of existing tokens (including ones created before UI addition, i.e. during previous releases) with the following information displayed in columns:

  • Description - custom description provided for token
  • API - the name of the predefined API requests set (IDE Plugins, Marketplace, Maven Plugin) or Custom one (hover over to view the exact methods)
  • Expires - the date the current token is valid till (the expired ones can be regenerated or deleted)
  • Last Used - the time of this token last usage
  • Created - the date of the creation

personal access tokens

The tools panel above the list provides access to the following buttons:

  • Generate - creates a new token by providing the description, expiration date and selecting the required API methods (either from predefined sets or manually)
  • Edit - adjusts the existing token or regenerates it (i.e. sets a new name, while maintaining all other parameters)
  • Copy - creates a new token using parameters of the existing one as a basis
  • Remove - deletes selected token
  • Refresh - displays the most recent changes to the list

All the token changes on account require an obligatory confirmation with the password before being applied.

More info

Back to the top

Node Group Scaling Mode

Starting with the PaaS 5.5.1 upgrade, it is possible to explicitly set the scaling mode for each node group in the environment. Just select the required one using a new drop-down list in the Horizontal Scaling section of the topology wizard. nodes horizontal scaling mode

There are two scaling modes:

  • Stateless - creates a new node from the base image template; the scaling is performed simultaneously
  • Stateful - copies file system of the master container into a new node; the scaling is performed sequentially (simultaneously during the initial layer creation)

The first option is comparatively faster, while the second one automatically copies all custom configurations (e.g. deployments or Custom SSL). Herewith, the transfer of custom files for the stateless mode can be done manually or configured via the Cloud Scripting automation.

The default scaling mode value is stateful for the load balancer, application server, VPS stacks and stateless for others. Herewith, when configuring a custom JPS package, the preferable scaling type can be defined with a new scalingMode property (using the new or clone value for the stateless or stateful mode respectively).

More info

Back to the top

API for Scaled Nodes Management

The API methods for the management of the scaled nodes (e.g. Deploy, DeployApp, RestartNodes, etc.) were refactored to simplify their usage. Namely, the isSequential parameter was deprecated (but still available for the compatibility reasons) and its logic added into the delay one:

  • if set to “-1” - the called action will be performed simultaneously (i.e. altogether)
  • if the value is >= 0 - operations will be done sequentially (i.e. one by one) with the specified delay between actions
Note: In case both parameters are provided with contradictory values, e.g. isSequential = true and delay = -1, the delay will have a higher priority.

Currently, such a change is already integrated into the dashboard topology wizard, allowing to set the default restart delay for the layer (can be set differently during the operation itself).

sequential delay

Back to the top

Go Archive Deployment

Improving integration of the Go programming language, an ability to deploy Go project from the archive was implemented in the current PaaS release. The deployment process is the same as for any other application server and could be done in a few clicks - just upload or provide a link to the archive with sources of your Go project and select the desired target environment. Optionally, configure any other configs (e.g. hooks or deploy strategy) and click Deploy for the platform to install your application automatically.

go project deployment from archive

Back to the top

HelloWorld Package Update

The platform provides and maintains a universal HelloWorld package, which can be deployed automatically on top of any certified application server stack. In such a way this solution supports all of the platform programming languages - Java, PHP, Python, Ruby, .NET and Node.js.

Due to the Go archive deployment integration within the current 5.5.1 release, the appropriate adjustments were applied to the HelloWorld package, ensuring its successful deployment into the Golang server. Also, to support the specifics of the Spring Boot Java application server, the .jar version of this solution was integrated into the package as well.

Back to the top

Engine Versions Grouping

Aiming to increase clarity and ensure better usability of the topology wizard, a grouping of the programming language engine versions was implemented. Now, the right-hand drop-down list within the Horizontal Scaling section automatically groups the available engine versions in the easy-to-find form, i.e by the major version (PHP 7.x.x, PHP 5.x.x) or type (JDK, OpenJDK, OpenJ9).

engine versions grouping

Also, as a part of this improvement, the displayed version names of the Java 7 and 8 engines were adjusted to match the latest releases pattern. For example, the old 1.8.0_172 denomination is now displayed as 8.0_172.

Back to the top

Collaboration Adjustments

When being included into collaboration with permission to create environments on the primary account, a user will be able to select Environment Owner through the appropriate pop-up. Starting with the present 5.5.1 PaaS release, if a new environment cannot be created due to limitations of a particular account, the appropriate user email option will be hidden in the drop-down menu of the Environment Owner pop-up.

More info

Back to the top

Cloud Scripting Console Optimization

Cloud Scripting (CS) console allows tracking actions performed due to the JPS packages installation. It is accessible via the {hosterDomain}/console URL (should be already logged into PaaS account) and provides real-time information on the CS code execution. Herewith, to keep the displayed data up to date, the Auto-Refresh feature can be enabled with the same-named button at the top of the page.

In the current 5.5.1 release, the behavior of the Auto-Refresh option was adjusted to simplify CS logs analysis:

  • automatic switching to the latest records will be performed only if scrolled to the bottom of the console (i.e. upon changing screen position, it won’t be jumping down, allowing to conveniently read/analyze logs)
  • upon selecting some text in the console, the Auto-Refresh feature will be immediately disabled
  • option re-enabling with the appropriate button will deselect text in the console

Cloud Scripting Engine Version Comparison (5.5.3)

Within the present PaaS release, a new ${engine} placeholder was added. It returns a CS engine version used on the platform, which can be used in scripts to adjust called actions based on the obtained value. Also, for the convenient comparison two new functional placeholders were implemented:

  • ${fn.compare(version1, version2)} - compares any two comma-separated versions, returning the following results:
    • 0 - version1 is equal to version2
    • 1 - version1 is greater than version2
    • -1 - version1 is less than version2
  • ${fn.compareEngine(version)} - compares platform CS engine version with the given version, returning the following results:
    • 0 - platform CS version is equal to the provided version
    • 1 - platform CS version is greater than the provided version
    • -1 - platform CS version is less than the provided version

More info

Back to the top

Prohibit Deployment for Layer (5.5.3)

Some solutions may require to forbid deployment into the specific layer(s). For example in the GlassFish cluster package, deployment should be performed via the DAS container (not through the worker nodes). Such a possibility was implemented via the new isDeploySupport node group property, which can be set as true or false to allow/prohibit deployment respectively.

Tip: In order to add this property the appropriate ApplyNodeGroupData API method can be called.

Back to the top

Software Stack Versions

Check out the list of the most accurate software stacks for the current platform version:

StackPaaS 5.5.1/2/3
Apache Balancer2.4.35
Apache PHP2.4.35
Apache Python2.4.35
Apache Ruby2.4.35
CentOS 6 (VPS)6.8
CentOS 7 (VPS)7.2
Couchbase5.1.1
CouchDB1.6.1
Docker Engine CE18.03
GlassFish 33.1.2.2
GlassFish 44.1.2
GlassFish 55.0
Golang1.10.3
HAProxy1.8.12
IIS8
Jetty 99.4.12
MariaDB 55.5.61
MariaDB 1010.3.9
Maven3.5.4
Memcached1.5.10
MongoDB 22.6.12
MongoDB 33.6.8
MongoDB 44.0.2
MSSQL2012
MySQL 55.7.22
MySQL 88.0.12
NGINX Balancer1.14.0
NGINX PHP1.14.0
NGINX Ruby1.14.0
NodeJS 66.14.1
NodeJS 88.11.3
NodeJS 99.11.1
NodeJS 1010.8.0
Payara 44.1.2.181
Payara 55.182
PerconaDB5.6
PostgreSQL 99.6.10
PostgreSQL 1010.5
Redis4.0.11
Spring Boot2
Tomcat 77.0.88
Tomcat 88.5.34
Tomcat 99.0.12
TomEE7.0.5
Ubuntu (VPS)16.04
Varnish 44.1.8
Varnish 55.2.1
Varnish 66.1.0
WildFly 1010.1.0
WildFly 1111.0.0
WildFly 1212.0.0
WildFly 1313.0.0
WildFly 1414.0.1
Windows (VPS)2012
Engine#
JDK6.0_45
7.0_79
8.0_181
9.0.4
10.0.2
Open JDK7.0._181
8.0_181
OpenJ90.9.0-8u162-b12
0.9.0-9.0.4.12
0.9.0-10.0.2
PHP5.3.29
5.4.45
5.5.38
5.6.37
7.0.31
7.1.21
7.2.9
Ruby2.2.10
2.3.7
2.4.4
2.5.1
Python2.7.15
3.4.9
3.5.6
3.6.6
3.7.0
Node.js6.14.1
8.11.3
9.11.1
10.8.0
.NET4
Go1.10.3

Back to the top

Bug Fixes

In the tables below, you can see the list of bug fixes applied to the platform starting from PaaS 5.5.1/2/3 releases:

PaaS 5.5.1
#Description
JE-19106Email templates for some managed stacks are not provided with environment name and admin panel link
JE-28131The Add/Remove Nodes auto-horizontal scaling triggers are still ticked in UI after being automatically disabled due to the more than 100% and less than 0% load conditions
JE-34803Unhandled error during password reset on the MySQL node, after redeployment from the 5.7 version to the 5.6 one
JE-35161Crash report is not displayed, upon invoking the RestartNodesByGroup API method on the custom Docker container
JE-35199The long names of the Java engine versions are clipped in topology wizard
JE-35558The custom Docker containers based on the Ubuntu 16.10 cannot be created
JE-38074An error is displayed within dashboard task manager, while following tutorial as a trial user
JE-39861The email repors on the OOM killer execution within containers are not provided
JE-40002The project link displayed in the dashboard Deployments column is not updated for the Golang server after context redeploy
JE-40877The free resources displayed in the Quotas & Pricing window should be colored in green
JE-41094Incorrect engine versions order in the appropriate topology wizard list
JE-41152Dashboard tutorial is displayed incorrectly due to the corrupted styles
JE-41423When working with multiple mount points, the one selected after unmounting becomes unselectable
JE-41543Web SSH console is flickering during connection establishment
JE-41562Error, while creating Docker-based containers
JE-41757The redeploy operation fails, if container is busy with some external process
JE-41823Windows-based nodes are not accessible via RDP protocol
JE-41909After creating Couchbase cluster, the admin credentials should be sent for the master node only
JE-41915If the default description for access token is used, it should be automatically adjusted after switching to another API preset
JE-41942The “-1” value for sequential restart delay is not saved through the topology wizard
JE-41954The status for the password protected actions (e.g. 2FA and access tokens related) is not displayed in tasks manager
JE-41970Custom Docker containers based on the CentOS 6 image are missing the iptables-services package
JE-41988Some API requests cannot be authenticated by the access tokens with sufficient permissions
JE-41996Error, while cloning environment with a configured layers linking
JE-42109Error, while reading logs and redeploying custom Docker container simultaneously
JE-42120Incorrect description for the access tokens expiration date hint
JE-42178Error, while trying to authenticate the SignOut and CheckSign API methods with token
JE-42192Error, while trying to mount the Ubuntu/Debian Docker containers as storage
PaaS 5.5.2
#Description
JE-42338The org.hibernate.LazyInitializationException error occurs while executing the GetEnvs API request on account with a lot of environments
JE-42390Container run command cannot be executed if specified for non-root user and the /usr/bin/nologin, /usr/bin/false or similar shell is used
JE-42409Alpine-based Docker images cannot be used as the NFS clients
JE-42567Ability to name one environment with the AppID of another
JE-42591The access denied error occurs while working with file manager due to incorrect permissions of the /etc/sudoers.d/jelastic file
JE-42767Incorrect behavior when switching back to the dashboard tab after its hibernation by the Chrome browser
JE-42789The java.lang.NullPointerException error occurs while executing the GetEnvs API request on account with a lot of environments
JE-42862Incorrect behaviour of the stack and engine selection lists on the PHP tab of the topology wizard
JE-42984The JDBCConnectionException error occurs while executing the GetEnvs API request on account with a lot of environments
PaaS 5.5.3
#Description
JE-34793An HTTP transport error appears while creating an environment via the WHMCS panel
JE-35378The logs on building a project via the Maven node should be displayed for the collaborators with the admin permissions
JE-42260The projects build by collaborators via the Maven node are displayed within the Deployment Manager of the primary account instead of the appropriate collaborator
JE-43338Environment unlinked from one collaborator is removed from others as well
JE-43735Unhandled error, while creating an environment with the auto-clustering feature enabled and the ON_ENV_INSTALL variable specified

Back to the top