このセクションは、VPNaaS のダッシュボードパネル追加について紹介します。

git からソースコードを取得します。

[root@controller ~]# git clone https://git.openstack.org//openstack/neutron-vpnaas-dashboard
Cloning into 'neutron-vpnaas-dashboard'...
remote: Counting objects: 1348, done.
remote: Compressing objects: 100% (463/463), done.
remote: Total 1348 (delta 710), reused 1208 (delta 600)
Receiving objects: 100% (1348/1348), 468.10 KiB | 73.00 KiB/s, done.
Resolving deltas: 100% (710/710), done.
[root@controller ~]# 

取得したソースコードのディレクトリへ移動します。

[root@controller ~]# cd neutron-vpnaas-dashboard/

pip install を実行します。

[root@controller neutron-vpnaas-dashboard]# python setup.py install
running install
[pbr] Writing ChangeLog
[pbr] Generating ChangeLog
[pbr] ChangeLog complete (0.0s)
[pbr] Generating AUTHORS
[pbr] AUTHORS complete (0.0s)
running build
running build_py
creating build
creating build/lib
creating build/lib/neutron_vpnaas_dashboard
copying neutron_vpnaas_dashboard/__init__.py -> build/lib/neutron_vpnaas_dashboard
copying neutron_vpnaas_dashboard/version.py -> build/lib/neutron_vpnaas_dashboard
creating build/lib/neutron_vpnaas_dashboard/test
creating build/lib/neutron_vpnaas_dashboard/test/api_tests
copying neutron_vpnaas_dashboard/test/api_tests/__init__.py -> build/lib/neutron_vpnaas_dashboard/test/api_tests
copying neutron_vpnaas_dashboard/test/api_tests/test_vpnaas.py -> build/lib/neutron_vpnaas_dashboard/test/api_tests
creating build/lib/neutron_vpnaas_dashboard/test/test_data
copying neutron_vpnaas_dashboard/test/test_data/__init__.py -> build/lib/neutron_vpnaas_dashboard/test/test_data
copying neutron_vpnaas_dashboard/test/test_data/utils.py -> build/lib/neutron_vpnaas_dashboard/test/test_data
copying neutron_vpnaas_dashboard/test/test_data/vpnaas_data.py -> build/lib/neutron_vpnaas_dashboard/test/test_data
creating build/lib/neutron_vpnaas_dashboard/dashboards
creating build/lib/neutron_vpnaas_dashboard/dashboards/project
creating build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/__init__.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/forms.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/panel.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/tables.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/tabs.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/tests.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/urls.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/views.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/workflows.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn
copying neutron_vpnaas_dashboard/test/__init__.py -> build/lib/neutron_vpnaas_dashboard/test
copying neutron_vpnaas_dashboard/test/helpers.py -> build/lib/neutron_vpnaas_dashboard/test
copying neutron_vpnaas_dashboard/test/settings.py -> build/lib/neutron_vpnaas_dashboard/test
creating build/lib/neutron_vpnaas_dashboard/api
copying neutron_vpnaas_dashboard/api/__init__.py -> build/lib/neutron_vpnaas_dashboard/api
copying neutron_vpnaas_dashboard/api/vpn.py -> build/lib/neutron_vpnaas_dashboard/api
copying neutron_vpnaas_dashboard/dashboards/__init__.py -> build/lib/neutron_vpnaas_dashboard/dashboards
creating build/lib/neutron_vpnaas_dashboard/enabled
copying neutron_vpnaas_dashboard/enabled/_7100_project_vpn_panel.py -> build/lib/neutron_vpnaas_dashboard/enabled
copying neutron_vpnaas_dashboard/enabled/__init__.py -> build/lib/neutron_vpnaas_dashboard/enabled
copying neutron_vpnaas_dashboard/dashboards/project/__init__.py -> build/lib/neutron_vpnaas_dashboard/dashboards/project
running egg_info
creating neutron_vpnaas_dashboard.egg-info
writing requirements to neutron_vpnaas_dashboard.egg-info/requires.txt
writing neutron_vpnaas_dashboard.egg-info/PKG-INFO
writing top-level names to neutron_vpnaas_dashboard.egg-info/top_level.txt
writing dependency_links to neutron_vpnaas_dashboard.egg-info/dependency_links.txt
writing pbr to neutron_vpnaas_dashboard.egg-info/pbr.json
[pbr] Processing SOURCES.txt
writing manifest file 'neutron_vpnaas_dashboard.egg-info/SOURCES.txt'
[pbr] In git context, generating filelist from git
warning: no previously-included files matching '*.pyc' found anywhere in distribution
writing manifest file 'neutron_vpnaas_dashboard.egg-info/SOURCES.txt'
creating build/lib/neutron_vpnaas_dashboard/locale
copying neutron_vpnaas_dashboard/locale/.placeholder -> build/lib/neutron_vpnaas_dashboard/locale
creating build/lib/neutron_vpnaas_dashboard/locale/de
creating build/lib/neutron_vpnaas_dashboard/locale/de/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/de/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/de/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/en_GB
creating build/lib/neutron_vpnaas_dashboard/locale/en_GB/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/en_GB/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/en_GB/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/id
creating build/lib/neutron_vpnaas_dashboard/locale/id/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/id/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/id/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/ja
creating build/lib/neutron_vpnaas_dashboard/locale/ja/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/ja/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/ja/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/ko_KR
creating build/lib/neutron_vpnaas_dashboard/locale/ko_KR/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/ko_KR/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/ko_KR/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/pt_BR
creating build/lib/neutron_vpnaas_dashboard/locale/pt_BR/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/pt_BR/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/pt_BR/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/tr_TR
creating build/lib/neutron_vpnaas_dashboard/locale/tr_TR/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/tr_TR/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/tr_TR/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/locale/zh_CN
creating build/lib/neutron_vpnaas_dashboard/locale/zh_CN/LC_MESSAGES
copying neutron_vpnaas_dashboard/locale/zh_CN/LC_MESSAGES/django.po -> build/lib/neutron_vpnaas_dashboard/locale/zh_CN/LC_MESSAGES
creating build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates
creating build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_add_endpoint_group_help.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_add_ike_policy_help.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_add_ipsec_policy_help.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_add_vpn_service_help.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_endpointgroup_details.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_ikepolicy_details.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_ipsecpolicy_details.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_ipsecsiteconnection_details.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_update_endpointgroup.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_update_ikepolicy.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_update_ipsecpolicy.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_update_ipsecsiteconnection.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_update_vpnservice.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_vpn_ips.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/_vpnservice_details.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/index.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/update_endpointgroup.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/update_ikepolicy.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/update_ipsecpolicy.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/update_ipsecsiteconnection.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
copying neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn/update_vpnservice.html -> build/lib/neutron_vpnaas_dashboard/dashboards/project/vpn/templates/vpn
running install_lib
running install_egg_info
removing '/usr/lib/python2.7/site-packages/neutron_vpnaas_dashboard-1.4.1.dev10-py2.7.egg-info' (and everything under it)
Copying neutron_vpnaas_dashboard.egg-info to /usr/lib/python2.7/site-packages/neutron_vpnaas_dashboard-1.4.1.dev10-py2.7.egg-info
running install_scripts
[root@controller neutron-vpnaas-dashboard]# 

horizonプラグインを有効にします。

[root@controller neutron-vpnaas-dashboard]# cp -rp neutron_vpnaas_dashboard/enabled/_7100_project_vpn_panel.py /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/_7100_project_vpn_panel.py
[root@controller neutron-vpnaas-dashboard]# 

openstack ダッシュボードがインストールされているディレクトリへ移動します。

[root@controller neutron_vpnaas_dashboard]# cd /usr/share/openstack-dashboard/
[root@controller openstack-dashboard]# 

Neutron VPNaaSダッシュボードのメッセージカタログをコンパイルします。

[root@controller openstack-dashboard]# ./manage.py compilemessages
[root@controller openstack-dashboard]# 

Djangoの更新コマンドを実行します(使用している場合)。

[root@controller openstack-dashboard]# DJANGO_SETTINGS_MODULE=openstack_dashboard.settings python manage.py collectstatic --noinput

0 static files copied to '/usr/share/openstack-dashboard/static', 2150 unmodified.
[root@controller openstack-dashboard]# 
[root@controller openstack-dashboard]# DJANGO_SETTINGS_MODULE=openstack_dashboard.settings python manage.py compress --force
Found 'compress' tags in:
	/usr/share/openstack-dashboard/openstack_dashboard/templates/serial_console.html
	/usr/share/openstack-dashboard/openstack_dashboard/templates/horizon/_conf.html
	/usr/share/openstack-dashboard/openstack_dashboard/templates/_stylesheets.html
	/usr/share/openstack-dashboard/openstack_dashboard/templates/horizon/_scripts.html
Compressing... done
Compressed 7 block(s) from 4 template(s) for 2 context(s).
[root@controller openstack-dashboard]# 

httpd サービスを再起動し、新しいパネルを有効にします。

[root@controller openstack-dashboard]# systemctl restart httpd
[root@controller openstack-dashboard]# 

local_settings.py の OPENSTACK_NEUTRON_NETWORK に ‘enable_VPNaaS’: True, が登録されていることを確認します。

[root@controller openstack-dashboard]# vi openstack_dashboard/local/local_settings.py

OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': True,
    'enable_quotas': True,
    'enable_ipv6': True,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_fip_topology_check': True,
    'enable_lb': True,
    'enable_VPNaaS': True,