OpenStack UI Plugin
Overview
Integration with the Openstack interface is our second plugin alongside the oVirt/RHV virtualization family. Thanks to it, you can perform most of the basic operations without logging into the DPX vPlus dashboard.
After installation (which is described at the end of this article) you will see a new tab "Backup & Recovery" in the OpenStack menu. This consists of several sub-tabs that allow you to perform basic actions such as backup, restore or create a new schedule.

Dashboard
Divided into a few sections, it makes it possible to view and set the most vital options related to management, monitoring, and reporting.

Reporting
Reporting allow users to view statistics, especially for backup and restore tasks. They also provide the possibility to view what has happened lately in the DPX vPlus environment.

Virtual Environments
Instances
This tab shows all inventoried instances in your OpenStack environment.

Besides, you can also perform basic backup operations.

Backup SLAs
Our plugin also allows you to create or manage backup policies

and schedules.

Mounted Backups
Finally, you can also browse your mounted backups from the OpenStack dashboard. You only need to enter the backup details using the menu on the right.

From here we can see the basic information about the backup and start browsing the files using the "Browse" button on the right.

Just select a folder or file and then click on the "download selected" button to have the files on your computer.

Task Console
Basic information about current tasks performed by DPX vPlus.

Settings
Mailing
It allows you to create a mailing list that can be used for sending group report e-mails.

OpenStack general integration setup
You can find minimum requirements for OpenStack UI Plugin in Support Matrix
You can find the add-on in the GitHub repository. Extract the provided archive onto your Horizon host and execute python install.py STORWARE_API_URL USER PASSWORD
Example: python install.py http://localhost:8080/api admin vprotect.
Note: you need to restart your Horizon HTTP server after this
The above-mentioned script will copy the plug-in files to the following folders:
/usr/share/openstack-dashboard/openstack_dashboard/dashboards/vprotect- plugin files/usr/share/openstack-dashboard/openstack_dashboard/enabled- file to enable the plugin
In order to uninstall it, remove the vprotect subfolder and enabled/_50_vprotect.py file and restart your Horizon HTTP server.
Integrate DPX vPlus dashboard plugin to OpenStack (LXC)
Requirements:
- git, python3-yaml packages
- internet connection
-
Check the name of the horizon container:
lxc-ls -f | grep horizon
example:
[root@aio1 ~]# lxc-ls -f | grep horizon aio1_horizon_container-b2daccaa RUNNING 1 onboot, openstack 10.255.255.213, 172.29.239.229 - false -
Enter horizon container:
[root@aio1 ~]# lxc-attach aio1_horizon_container-b2daccaa -
Install requirements packages:
root@aio1-horizon-container-b2daccaa:~# apt install python3-yaml git -y -
Clone from github installations files:
root@aio1-horizon-container-b2daccaa:~# git clone https://github.com/Storware/openstack-horizon-ui-vprotect-extensions -
Change owner of the plugin directory to horizon:horizon
root@aio1-horizon-container-b2daccaa:~# chown -R horizon:horizon openstack-horizon-ui-vprotect-extensions -
Enter plugin directory:
root@aio1-horizon-container-b2daccaa:~# cd openstack-horizon-ui-vprotect-extensions -
Optionally you can ping DPX vPlus server by ping
root@aio1-horizon-container-b2daccaa:~# ping storware-server-IP-ADDRESS -
Next, install the plugin
root@aio1-horizon-container-b2daccaa:~# python3 install.py http://storware-ip:8080/api admin_user admin_passwordWhen the installation process is completed, plugin files should be placed in /usr/share/openstack-dashboard/openstack_dashboard directory. If your path to the dashboard directory is different, create symbolic links from plugin install directories to non-standard directories.
Example:
root@aio1-horizon-container-b2daccaa:~# ln -s /usr/share/openstack-dashboard/openstack_dashboard/dashboards/vprotect /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/openstack_dashboard/dashboards/
root@aio1-horizon-container-b2daccaa:~# ln -s /usr/share/openstack-dashboard/static/vprotect /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/static/
root@aio1-horizon-container-b2daccaa:~# ln -s /usr/share/openstack-dashboard/openstack_dashboard/enabled/_50_vprotect.py /openstack/venvs/horizon-23.1.0.dev42/lib/python3.8/dist-packages/openstack_dashboard/enabled/ -
Edit /etc/apache2/sites-available/openstack-dashboard.conf file:
- Add alias for static files
Alias /dashboard/static /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/static/- Directory tag informs you, where dashboards directories should be placed.
- Second Directory tag informs where static directory from plugin should be placed.
Example: configuration file should look like this:
# Ansible managed
# If horizon is being served via SSL from this web server,
# then we must redirect HTTP requests to HTTPS.
# If horizon is being served via SSL via a load balancer, we
# need to listen via HTTP on this web server. If SSL is not
# enabled, then the same applies.
<VirtualHost 172.29.239.229:80>
ServerName aio1-horizon-container-b2daccaa.openstack.local
LogLevel info
ErrorLog syslog:daemon
CustomLog "|/usr/bin/env logger -p [daemon.info](http://daemon.info/) -t apache2" "%h %l %u \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Options +FollowSymLinks
RequestHeader set X-Forwarded-Proto "https"
WSGIScriptAlias / /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/openstack_dashboard/wsgi.py
WSGIDaemonProcess horizon user=horizon group=horizon processes=1 threads=1 python-path=/openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/site-packages
WSGIProcessGroup horizon
WSGIApplicationGroup %{GLOBAL}
<Directory /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/openstack_dashboard>
<Files wsgi.py >
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Files>
</Directory>
Alias /static /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/static/
Alias /dashboard/static /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/static/
<Directory /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/static/>
Options -FollowSymlinks
<IfVersion < 2.4>
AllowOverride None
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>
Edit /openstack/venvs/horizon-23.1.0.dev65/lib/python3.8/dist-packages/openstack_dashboard/urls.py and add in urlPatterns following line
url(r'^dashboard/', horizon.base._wrapped_include(horizon.urls))
Your urls.py should looks like:
"""
URL patterns for the OpenStack Dashboard.
"""
from django.conf import settings
from django.conf.urls import include
from django.conf.urls.static import static
from django.conf.urls import url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views import defaults
import horizon
import horizon.base
from horizon.browsers import views as browsers_views
from horizon.decorators import require_auth
from openstack_dashboard.api import rest
from openstack_dashboard import views
urlpatterns = [
url(r'^$', views.splash, name='splash'),
url(r'^api/', include(rest.urls)),
url(r'^header/', views.ExtensibleHeaderView.as_view()),
url(r'', horizon.base._wrapped_include(horizon.urls)),
**url(r'^dashboard/', horizon.base._wrapped_include(horizon.urls)),**
]
# add URL for ngdetails -
Restart httpd service
/etc/init.d/apache2 restart -
After refreshing the dashboard site, you should see DPX vPlus tab in the Openstack menu.
Installing Horizon Plugin in a Juju Deployment
This guide provides detailed instructions for installing the Horizon plugin in a Juju-deployed OpenStack environment.
Prerequisites
Before you begin, make sure you have the following:
- Access to the Juju controller and the model where the OpenStack services are deployed.
- The IP address of the DPX vPlus server
Installation
-
SSH into the leader unit of the
openstack-dashboardapplication:juju ssh openstack-dashboard/leader -
Clone the Horizon plugin repository from GitHub:
git clone https://github.com/Storware/openstack-horizon-ui-vprotect-extensions -
Change into the cloned directory:
cd openstack-horizon-ui-vprotect-extensions -
Install the required Python packages using
pip:pip3 install -r requirements.txt -
Run the plugin installer script with the following command:
python3 install.py http://SBR_SERVER_IP:8080/api admin vPr0tect- Replace
http://SBR_SERVER_IP:8080with the actual address of your DPX vPlus server. adminis the username.vPr0tectis the password.
- Replace
-
Navigate to the static files directory of the OpenStack Dashboard:
cd /usr/share/openstack-dashboard/openstack_dashboard/static/ -
Create a symbolic link to the DPX vPlus static files:
ln -s /var/lib/openstack-dashboard/static/vprotect/ vprotect -
Check if the following aliases are present in the Apache configuration file:
nano /etc/apache2/conf-enabled/openstack-dashboard.confEnsure the file contains the following aliases:
Alias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/dashboards
Alias /dashboard/static /var/lib/openstack-dashboard/static/
Alias /static /var/lib/openstack-dashboard/static/
Alias /horizon/static /var/lib/openstack-dashboard/static/ -
Edit the default Apache site configuration to add a rewrite rule:
vi /etc/apache2/sites-available/000-default.confAdd the following lines under
DocumentRoot /var/www:RewriteEngine on
RewriteRule ^/dashboard/vprotect/(.*)$ http://%{HTTP_HOST}/horizon/vprotect/$1 [R=301,L]
**Note:** This rewrite rule may need adjustment based on your HAProxy/ReverseProxy setup.
-
Edit the
urls.pyfile to include a specific path:vi /usr/lib/python3/dist-packages/openstack_dashboard/urls.py -
Add the following line to the
urlpatternssection:re_path(r'^horizon/', horizon.base._wrapped_include(horizon.urls)), -
Restart the Apache service to apply the changes:
sudo service apache2 restart
The Horizon plugin should now be installed and configured in your Juju-deployed OpenStack environment. Verify that the plugin appears in the OpenStack Dashboard and is functioning correctly.