Add Horizon 19.2.0 for OpenStack Wallaby support

This commit is contained in:
sean-lau 2021-08-12 17:04:57 +08:00
parent 7f31553a6e
commit b155e6deb4
9 changed files with 392 additions and 302 deletions

View File

@ -1,36 +0,0 @@
From 63a568a42073647218dab3766fa88a73ecb8899e Mon Sep 17 00:00:00 2001
From: Sumit Jamgade <sjamgade@suse.com>
Date: Wed, 6 Feb 2019 14:55:10 +0100
Subject: [PATCH] Do not set COMPRESS_ENABLED explicitly
it is always opposite of DEBUG[1].
this also helps keep compressor OFF during test as test do not need
static files
Any plugins needing compression can explicitly enable in its own
local_settings
1-
https://django-compressor.readthedocs.io/en/stable/settings/#django.conf.settings.COMPRESS_ENABLED
Change-Id: I9f3979da38cca677256799be8eb215a4ea32cf12
---
horizon/test/settings.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/horizon/test/settings.py b/horizon/test/settings.py
index 5834cdd87..d93ba37ee 100644
--- a/horizon/test/settings.py
+++ b/horizon/test/settings.py
@@ -126,7 +126,7 @@ STATICFILES_DIRS = settings_utils.get_xstatic_dirs(
settings_utils.BASE_XSTATIC_MODULES, HORIZON_CONFIG
)
-COMPRESS_ENABLED = True
+COMPRESS_ENABLED = False
COMPRESS_OFFLINE = False
COMPRESS_ROOT = "/tmp/"
COMPRESS_PARSER = 'compressor.parser.HtmlParser'
--
2.16.4

Binary file not shown.

BIN
horizon-19.2.0.tar.gz Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
WSGIDaemonProcess dashboard
WSGIProcessGroup dashboard
WSGISocketPrefix run/wsgi
WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi
Alias /dashboard/static /usr/share/openstack-dashboard/static
<Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi>
Options All
AllowOverride All
Require all granted
</Directory>
<Directory /usr/share/openstack-dashboard/static>
Options All
AllowOverride All
Require all granted
</Directory>

View File

@ -0,0 +1,8 @@
/var/log/horizon/*.log {
weekly
rotate 4
missingok
compress
minsize 100k
}

View File

@ -0,0 +1,7 @@
[Service]
ExecStartPre=/usr/bin/python /usr/share/openstack-dashboard/manage.py collectstatic --noinput --clear -v0
ExecStartPre=/usr/bin/python /usr/share/openstack-dashboard/manage.py compress --force -v0
TimeoutStartSec=5min
[Unit]
After=memcached.service

View File

@ -1,40 +0,0 @@
<VirtualHost *:80>
WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py
WSGIDaemonProcess horizon user=apache group=apache processes=3 threads=10 home=/usr/share/openstack-dashboard/ display-name=%{GROUP}
WSGIApplicationGroup %{GLOBAL}
SetEnv APACHE_RUN_USER horizon
SetEnv APACHE_RUN_GROUP horizon
WSGIProcessGroup horizon
Alias /dashboard/static /usr/share/openstack-dashboard/static
RedirectMatch "^/$" "/dashboard/"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /usr/share/openstack-dashboard/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
# Apache 2.4 uses mod_authz_host for access control now (instead of
# "Allow")
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/horizon_error.log
LogLevel warn
CustomLog /var/log/httpd/horizon_access.log combined
</VirtualHost>
WSGISocketPrefix /var/run/httpd

358
openstack-dashboard.spec Normal file
View File

@ -0,0 +1,358 @@
%{!?upstream_version: %global upstream_version %{version}%{?milestone}}
Name: openstack-dashboard
Version: 19.2.0
Release: 1
Summary: OpenStack Dashboard (Horizon)
License: Apache-2.0 and BSD
URL: http://horizon.openstack.org/
Source0: https://tarballs.openstack.org/horizon/horizon-%{upstream_version}.tar.gz
Source1: openstack-dashboard-httpd-2.4.conf
Source2: openstack-dashboard-systemd.conf
Source3: openstack-dashboard-logrotate.conf
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pbr >= 2.0.0
BuildRequires: git-core
BuildRequires: gettext
# for checks:
BuildRequires: python3-nose
BuildRequires: python3-osprofiler
BuildRequires: python3-iso8601
BuildRequires: python3-pycodestyle
BuildRequires: python3-mock
BuildRequires: python3-netaddr
BuildRequires: python3-anyjson
Requires: python3-horizon
Requires: python3-openstack_auth
Provides: openstack-horizon
%description
The OpenStack dashboard provides administrators and users a graphical
interface to access, provision and automate cloud-based resources. The
extensible design makes it easy to plug in and expose third party
products and services, such as billing, monitoring and additional
management tools.
%package -n python3-openstack_auth
Summary: OpenStack Auth (Horizon) - Python Module
Provides: python-openstack_auth
%description -n python3-openstack_auth
The Python module OpenStack Auth provides Authentication mechanism
for the OpenStack Dashboard (Horizon).
%package -n python3-horizon
Summary: Openstack web user interface reference implementation
BuildRequires: python3-django-debreach
BuildRequires: python3-django-compressor >= 2.0
BuildRequires: python3-django-pyscss >= 2.0.2
BuildRequires: python3-XStatic
BuildRequires: python3-XStatic-Angular >= 1.5.8.0
BuildRequires: python3-XStatic-Angular-Bootstrap
BuildRequires: python3-XStatic-Angular-Schema-Form
BuildRequires: python3-XStatic-D3
BuildRequires: python3-XStatic-Font-Awesome
BuildRequires: python3-XStatic-JSEncrypt
BuildRequires: python3-XStatic-Jasmine
BuildRequires: python3-XStatic-Bootstrap-SCSS
BuildRequires: python3-XStatic-termjs
BuildRequires: python3-XStatic-smart-table
BuildRequires: python3-XStatic-Angular-FileUpload
BuildRequires: python3-XStatic-Angular-Gettext
BuildRequires: python3-XStatic-bootswatch
BuildRequires: python3-XStatic-roboto-fontface
BuildRequires: python3-XStatic-mdi
BuildRequires: python3-XStatic-objectpath
BuildRequires: python3-XStatic-tv4
# bootstrap-scss requires at least python-scss >= 1.2.1
BuildRequires: python3-scss >= 1.3.5
BuildRequires: fontawesome-fonts-web >= 4.1.0
BuildRequires: python3-oslo-concurrency
BuildRequires: python3-oslo-config
BuildRequires: python3-oslo-i18n
BuildRequires: python3-oslo-serialization
BuildRequires: python3-oslo-utils
BuildRequires: python3-oslo-policy
BuildRequires: python3-babel
BuildRequires: python3-pytz
BuildRequires: systemd
BuildRequires: python3-django-appconf
BuildRequires: python3-semantic_version
BuildRequires: python3-XStatic-jQuery
BuildRequires: python3-XStatic-Hogan
BuildRequires: python3-XStatic-JQuery-Migrate
BuildRequires: python3-XStatic-JQuery-TableSorter
BuildRequires: python3-XStatic-JQuery-quicksearch
BuildRequires: python3-XStatic-Rickshaw
BuildRequires: python3-XStatic-Spin
BuildRequires: python3-XStatic-jquery-ui
BuildRequires: python3-XStatic-Bootstrap-Datepicker
BuildRequires: python3-XStatic-Angular-lrdragndrop
BuildRequires: python3-pint
BuildRequires: python3-memcached
BuildRequires: python3-glanceclient
BuildRequires: python3-keystoneclient
BuildRequires: python3-novaclient >= 9.1.0
BuildRequires: python3-neutronclient
BuildRequires: python3-cinderclient
BuildRequires: python3-swiftclient
BuildRequires: python3-pytest
Requires: python3-iso8601
Requires: python3-glanceclient >= 2.8.0
Requires: python3-keystoneclient >= 3.22.0
Requires: python3-keystoneauth1 >= 3.4.0
Requires: python3-novaclient >= 9.1.0
Requires: python3-neutronclient >= 6.7.0
Requires: python3-cinderclient >= 5.0.0
Requires: python3-swiftclient >= 3.2.0
Requires: python3-netaddr
Requires: python3-osprofiler >= 2.3.0
Requires: python3-django-pyscss >= 2.0.2
Requires: python3-XStatic
Requires: python3-XStatic-Angular >= 1.5.8.0
Requires: python3-XStatic-Angular-Bootstrap
Requires: python3-XStatic-Angular-Schema-Form
Requires: python3-XStatic-D3
Requires: python3-XStatic-Font-Awesome
Requires: python3-XStatic-JSEncrypt
Requires: python3-XStatic-Jasmine
Requires: python3-XStatic-Bootstrap-SCSS >= 3.3.7.1
Requires: python3-XStatic-termjs
Requires: python3-XStatic-smart-table
Requires: python3-XStatic-Angular-Gettext
Requires: python3-XStatic-Angular-FileUpload
Requires: python3-XStatic-bootswatch
Requires: python3-XStatic-roboto-fontface >= 0.5.0.0
Requires: python3-XStatic-mdi
Requires: python3-XStatic-objectpath
Requires: python3-XStatic-tv4
Requires: python3-django-debreach
Requires: python3-scss >= 1.3.7
Requires: fontawesome-fonts-web >= 4.1.0
Requires: python3-oslo-concurrency >= 3.26.0
Requires: python3-oslo-config >= 2:5.2.0
Requires: python3-oslo-i18n >= 3.15.3
Requires: python3-oslo-serialization >= 2.18.0
Requires: python3-oslo-utils >= 3.40.0
Requires: python3-oslo-upgradecheck >= 0.1.1
Requires: python3-requests >= 2.14.2
Requires: python3-oslo-policy >= 3.2.0
Requires: python3-babel
Requires: python3-futurist
Requires: openssl
Requires: logrotate
Requires: python3-mod_wsgi
Requires: python3-django-appconf
Requires: python3-pymongo >= 3.0.2
Requires: python3-semantic_version >= 2.3.1
Requires: python3-XStatic-jQuery
Requires: python3-XStatic-Hogan
Requires: python3-XStatic-JQuery-Migrate
Requires: python3-XStatic-JQuery-TableSorter
Requires: python3-XStatic-JQuery-quicksearch
Requires: python3-XStatic-Rickshaw
Requires: python3-XStatic-Spin
Requires: python3-XStatic-jquery-ui
Requires: python3-XStatic-Bootstrap-Datepicker
Requires: python3-XStatic-Angular-lrdragndrop
Requires: python3-yaml >= 3.12
Requires: python3-memcached
Requires: python3-debtcollector >= 1.2.0
Provides: python-horizon
%description -n python3-horizon
Openstack Dashboard is a web user interface for Openstack. The package
provides a reference implementation using the Django Horizon project,
mostly consisting of JavaScript and CSS to tie it altogether as a standalone
site.
This package contains the python library.
%prep
%autosetup -n horizon-%{upstream_version} -S git
# customize default settings
# WAS [PATCH] disable debug, move web root
sed -i "/^DEBUG =.*/c\DEBUG = False" openstack_dashboard/local/local_settings.py.example
sed -i "/^WEBROOT =.*/c\WEBROOT = '/dashboard/'" openstack_dashboard/local/local_settings.py.example
sed -i "/^.*ALLOWED_HOSTS =.*/c\ALLOWED_HOSTS = ['horizon.example.com', 'localhost']" openstack_dashboard/local/local_settings.py.example
sed -i "/^.*LOCAL_PATH =.*/c\LOCAL_PATH = '/tmp'" openstack_dashboard/local/local_settings.py.example
sed -i "/^.*POLICY_FILES_PATH =.*/c\POLICY_FILES_PATH = '/etc/openstack-dashboard'" openstack_dashboard/local/local_settings.py.example
sed -i "/^BIN_DIR = .*/c\BIN_DIR = '/usr/bin'" openstack_dashboard/settings.py
sed -i "/^COMPRESS_PARSER = .*/a COMPRESS_OFFLINE = True" openstack_dashboard/settings.py
# set COMPRESS_OFFLINE=True
sed -i 's:COMPRESS_OFFLINE.=.False:COMPRESS_OFFLINE = True:' openstack_dashboard/settings.py
# Fix manage.py shebang
sed -i 's/\/usr\/bin\/env python/\/usr\/bin\/env python3/' manage.py
%build
# compile message strings
cd horizon && django-admin compilemessages && cd ..
cd openstack_dashboard && django-admin compilemessages && cd ..
# Dist tarball is missing .mo files so they're not listed in distributed egg metadata.
# Removing egg-info and letting PBR regenerate it was working around that issue
# but PBR cannot regenerate complete SOURCES.txt so some other files wont't get installed.
# Further reading why not remove upstream egg metadata:
# https://github.com/emonty/python-oslo-messaging/commit/f632684eb2d582253601e8da7ffdb8e55396e924
# https://fedorahosted.org/fpc/ticket/488
echo >> horizon.egg-info/SOURCES.txt
ls */locale/*/LC_MESSAGES/django*mo >> horizon.egg-info/SOURCES.txt
%{py3_build}
# compress css, js etc.
cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
# get it ready for compressing later in puppet-horizon
%{__python3} manage.py collectstatic --noinput --clear
%{__python3} manage.py compress --force
# undo hack
cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
%install
%{py3_install}
# drop httpd-conf snippet
install -m 0644 -D -p %{SOURCE1} %{buildroot}%{_sysconfdir}/httpd/conf.d/openstack-dashboard.conf
install -d -m 755 %{buildroot}%{_datadir}/openstack-dashboard
install -d -m 755 %{buildroot}%{_sharedstatedir}/openstack-dashboard
install -d -m 755 %{buildroot}%{_sysconfdir}/openstack-dashboard
# create directory for systemd snippet
mkdir -p %{buildroot}%{_unitdir}/httpd.service.d/
cp %{SOURCE2} %{buildroot}%{_unitdir}/httpd.service.d/openstack-dashboard.conf
# Copy everything to /usr/share
mv %{buildroot}%{python3_sitelib}/openstack_dashboard \
%{buildroot}%{_datadir}/openstack-dashboard
cp manage.py %{buildroot}%{_datadir}/openstack-dashboard
rm -rf %{buildroot}%{python3_sitelib}/openstack_dashboard
# remove unnecessary .po files
find %{buildroot} -name django.po -exec rm '{}' \;
find %{buildroot} -name djangojs.po -exec rm '{}' \;
# Move config to /etc, symlink it back to /usr/share
mv %{buildroot}%{_datadir}/openstack-dashboard/openstack_dashboard/local/local_settings.py.example %{buildroot}%{_sysconfdir}/openstack-dashboard/local_settings
ln -s ../../../../..%{_sysconfdir}/openstack-dashboard/local_settings %{buildroot}%{_datadir}/openstack-dashboard/openstack_dashboard/local/local_settings.py
mv %{buildroot}%{_datadir}/openstack-dashboard/openstack_dashboard/conf/default_policies %{buildroot}%{_sysconfdir}/openstack-dashboard
mv %{buildroot}%{_datadir}/openstack-dashboard/openstack_dashboard/conf/*.yaml %{buildroot}%{_sysconfdir}/openstack-dashboard
mv %{buildroot}%{_datadir}/openstack-dashboard/openstack_dashboard/conf/nova_policy.d %{buildroot}%{_sysconfdir}/openstack-dashboard
%find_lang django --all-name
grep "\/usr\/share\/openstack-dashboard" django.lang > dashboard.lang
grep "\/site-packages\/horizon" django.lang > horizon.lang
# copy static files to %{_datadir}/openstack-dashboard/static
mkdir -p %{buildroot}%{_datadir}/openstack-dashboard/static
cp -a openstack_dashboard/static/* %{buildroot}%{_datadir}/openstack-dashboard/static
cp -a horizon/static/* %{buildroot}%{_datadir}/openstack-dashboard/static
cp -a static/* %{buildroot}%{_datadir}/openstack-dashboard/static
# create /var/run/openstack-dashboard/ and own it
mkdir -p %{buildroot}%{_sharedstatedir}/openstack-dashboard
# create /var/log/horizon and own it
mkdir -p %{buildroot}%{_var}/log/horizon
# place logrotate config:
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
cp -a %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-dashboard
%check
# NOTE(jpena): we do not want to run hacking tests in check
rm horizon/test/unit/hacking/test_checks.py
%{__python3} manage.py test horizon --settings=horizon.test.settings
%post -n openstack-dashboard
# ugly hack to set a unique SECRET_KEY
sed -i "/^from horizon.utils import secret_key$/d" /etc/openstack-dashboard/local_settings
sed -i "/^SECRET_KEY.*$/{N;s/^.*$/SECRET_KEY='`openssl rand -hex 10`'/}" /etc/openstack-dashboard/local_settings
# reload systemd unit files
systemctl daemon-reload >/dev/null 2>&1 || :
%postun
# update systemd unit files
systemctl daemon-reload >/dev/null 2>&1 || :
%files -f dashboard.lang
%license LICENSE
%dir %{_datadir}/openstack-dashboard/
%{_datadir}/openstack-dashboard/*.py*
%{_datadir}/openstack-dashboard/static
%{_datadir}/openstack-dashboard/openstack_dashboard/*.py*
%{_datadir}/openstack-dashboard/openstack_dashboard/api
%{_datadir}/openstack-dashboard/openstack_dashboard/contrib
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/admin
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/identity
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/project
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/settings
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/__init__.py*
%{_datadir}/openstack-dashboard/openstack_dashboard/django_pyscss_fix
%{_datadir}/openstack-dashboard/openstack_dashboard/enabled
%{_datadir}/openstack-dashboard/openstack_dashboard/karma.conf.js
%{_datadir}/openstack-dashboard/openstack_dashboard/local
%{_datadir}/openstack-dashboard/openstack_dashboard/management
%{_datadir}/openstack-dashboard/openstack_dashboard/static
%{_datadir}/openstack-dashboard/openstack_dashboard/templates
%{_datadir}/openstack-dashboard/openstack_dashboard/templatetags
%{_datadir}/openstack-dashboard/openstack_dashboard/themes
%{_datadir}/openstack-dashboard/openstack_dashboard/test
%{_datadir}/openstack-dashboard/openstack_dashboard/usage
%{_datadir}/openstack-dashboard/openstack_dashboard/utils
%dir %{_datadir}/openstack-dashboard/openstack_dashboard
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/locale
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/locale/??
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/locale/??_??
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/locale/??/LC_MESSAGES
%dir %{_datadir}/openstack-dashboard/openstack_dashboard/locale/??_??/LC_MESSAGES
%{_datadir}/openstack-dashboard/openstack_dashboard/.eslintrc
%{_datadir}/openstack-dashboard/openstack_dashboard/__pycache__
%{_datadir}/openstack-dashboard/openstack_dashboard/dashboards/__pycache__
%dir %attr(0750, root, apache) %{_sysconfdir}/openstack-dashboard
%dir %attr(0750, apache, apache) %{_sharedstatedir}/openstack-dashboard
%dir %attr(0750, apache, apache) %{_var}/log/horizon
%config(noreplace) %{_sysconfdir}/httpd/conf.d/openstack-dashboard.conf
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/local_settings
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/default_policies/*.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/default_policies/README.txt
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/cinder_policy.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/keystone_policy.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/nova_policy.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/glance_policy.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/neutron_policy.yaml
%config(noreplace) %attr(0640, root, apache) %{_sysconfdir}/openstack-dashboard/nova_policy.d/api-extensions.yaml
%config(noreplace) %attr(0644, root, root) %{_sysconfdir}/logrotate.d/openstack-dashboard
%attr(755,root,root) %dir %{_unitdir}/httpd.service.d
%config(noreplace) %{_unitdir}/httpd.service.d/openstack-dashboard.conf
%files -n python3-horizon
%license LICENSE
%{python3_sitelib}/horizon
%{python3_sitelib}/horizon-*.egg-info
%files -n python3-openstack_auth
%license LICENSE
%{python3_sitelib}/openstack_auth
%changelog
* Thu Aug 12 2021 liusheng <liusheng2048@gmail.com> 19.2.0-1
- Upgrade to version 19.2.0 (OpenStack Wallaby)
* Thu Feb 25 2021 wangxiyuan <wangxiyuan1007@gmail.com>
- Fix httpd config error
* Sat Feb 20 2021 huangtianhua <huangtianhua223@gmail.com>
- Change to use python-enmerkar instead of django-babel
* Tus Feb 09 2021 wangxiyuan <wangxiyuan1007@gmail.com>
- Init the first openstack victoria release

View File

@ -1,226 +0,0 @@
%global http_dashboard_dir %{_datarootdir}/openstack-dashboard
Name: openstack-horizon
Version: 18.6.1
Release: 3
Summary: OpenStack Dashboard (Horizon)
License: ASL 2.0
Group: Development/Languages/Python
URL: https://wiki.openstack.org/OpenStackDashboard
Source0: horizon-18.6.1.tar.gz
Source1: openstack-dashboard.conf
# https://review.openstack.org/#/c/635159/
Patch0: 0001-Do-not-set-COMPRESS_ENABLED-explicitly.patch
BuildRequires: fdupes
BuildRequires: gettext
BuildRequires: openstack-macros
BuildRequires: python3-Django
BuildRequires: python3-pint
BuildRequires: python3-XStatic
BuildRequires: python3-XStatic-Angular
BuildRequires: python3-XStatic-Angular-Bootstrap
BuildRequires: python3-XStatic-Angular-FileUpload
BuildRequires: python3-XStatic-Angular-Gettext
BuildRequires: python3-XStatic-Angular-Schema-Form
BuildRequires: python3-XStatic-Angular-lrdragndrop
BuildRequires: python3-XStatic-Bootstrap-Datepicker
BuildRequires: python3-XStatic-Bootstrap-SCSS
BuildRequires: python3-XStatic-D3
BuildRequires: python3-XStatic-Font-Awesome
BuildRequires: python3-XStatic-Hogan
BuildRequires: python3-XStatic-JQuery-Migrate
BuildRequires: python3-XStatic-JQuery-TableSorter
BuildRequires: python3-XStatic-JQuery-quicksearch
BuildRequires: python3-XStatic-JSEncrypt
BuildRequires: python3-XStatic-Jasmine
BuildRequires: python3-XStatic-Rickshaw
BuildRequires: python3-XStatic-Spin
BuildRequires: python3-XStatic-bootswatch
BuildRequires: python3-XStatic-jQuery
BuildRequires: python3-XStatic-jquery-ui
BuildRequires: python3-XStatic-mdi
BuildRequires: python3-XStatic-objectpath
BuildRequires: python3-XStatic-roboto-fontface
BuildRequires: python3-XStatic-smart-table
BuildRequires: python3-XStatic-termjs
BuildRequires: python3-XStatic-tv4
BuildRequires: python3-cinderclient
BuildRequires: python3-devel
BuildRequires: python3-django-compressor
BuildRequires: python3-django-debreach
BuildRequires: python3-django-pyscss
BuildRequires: python3-glanceclient
BuildRequires: python3-keystoneclient
BuildRequires: python3-mock
BuildRequires: python3-netaddr
BuildRequires: python3-neutronclient
BuildRequires: python3-novaclient
BuildRequires: python3-oslo-concurrency
BuildRequires: python3-oslo-policy
BuildRequires: python3-osprofiler
BuildRequires: python3-pbr
BuildRequires: python3-pytest
BuildRequires: python3-swiftclient
BuildRequires: python3-testtools
Requires: python3-horizon
Requires: python3-openstack_auth
Requires: httpd
Requires: python3-mod_wsgi
Requires(post): httpd-tools
Provides: openstack-horizon = %{version}-%{release}
BuildArch: noarch
%description
The OpenStack dashboard provides administrators and users a graphical
interface to access, provision and automate cloud-based resources. The
extensible design makes it easy to plug in and expose third party
products and services, such as billing, monitoring and additional
management tools.
The dashboard is just one way to interact with OpenStack resources.
Developers can automate access or build tools to manage their resources
using the native OpenStack API or the EC2 compatibility API.
%package -n python3-horizon
Summary: OpenStack Dashboard (Horizon) - Python Module
Requires: python3-babel
Requires: python3-django
Requires: python3-pint
Requires: python3-PyYAML
Requires: python3-XStatic
Requires: python3-XStatic-Angular
Requires: python3-XStatic-Angular-Bootstrap
Requires: python3-XStatic-Angular-FileUpload
Requires: python3-XStatic-Angular-Gettext
Requires: python3-XStatic-Angular-Schema-Form
Requires: python3-XStatic-Angular-lrdragndrop
Requires: python3-XStatic-Bootstrap-Datepicker
Requires: python3-XStatic-Bootstrap-SCSS
Requires: python3-XStatic-D3
Requires: python3-XStatic-Font-Awesome
Requires: python3-XStatic-Hogan
Requires: python3-XStatic-JQuery-Migrate
Requires: python3-XStatic-JQuery-TableSorter
Requires: python3-XStatic-JQuery-quicksearch
Requires: python3-XStatic-JSEncrypt
Requires: python3-XStatic-Jasmine
Requires: python3-XStatic-Rickshaw
Requires: python3-XStatic-Spin
Requires: python3-XStatic-bootswatch
Requires: python3-XStatic-jQuery
Requires: python3-XStatic-jquery-ui
Requires: python3-XStatic-mdi
Requires: python3-XStatic-objectpath
Requires: python3-XStatic-roboto-fontface
Requires: python3-XStatic-smart-table
Requires: python3-XStatic-termjs
Requires: python3-XStatic-tv4
Requires: python3-cinderclient
Requires: python3-enmerkar
Requires: python3-django-compressor
Requires: python3-django-debreach
Requires: python3-django-pyscss
Requires: python3-futurist
Requires: python3-glanceclient
Requires: python3-heatclient
Requires: python3-httplib2
Requires: python3-iso8601
Requires: python3-keystoneclient
Requires: python3-netaddr
Requires: python3-neutronclient
Requires: python3-novaclient
Requires: python3-oslo-concurrency
Requires: python3-oslo-config
Requires: python3-oslo-i18n
Requires: python3-oslo-policy
Requires: python3-oslo-serialization
Requires: python3-oslo-utils
Requires: python3-osprofiler
Requires: python3-pbr
Requires: python3-scss
Requires: python3-pytz
Requires: python3-semantic_version
Requires: python3-six
Requires: python3-swiftclient
%description -n python3-horizon
The Python module horizon is the core component of the OpenStack
dashboard.
%package -n python3-openstack_auth
Summary: OpenStack Auth (Horizon) - Python Module
%description -n python3-openstack_auth
The Python module OpenStack Auth provides Authentication mechanism
for the OpenStack Dashboard (Horizon).
%prep
%autosetup -p1 -n horizon-18.6.1
%py_req_cleanup
# Fix manage.py python3 support
sed -i 's#%{_bindir}/env python#%{_bindir}/python3#' manage.py
%build
# compile mo files before build
pushd horizon
python3 ../manage.py compilemessages
popd
pushd openstack_dashboard
python3 ../manage.py compilemessages
popd
%{py3_build}
%install
%{py3_install}
# Move openstack_dashboard files
install -d -m 755 %{buildroot}%{http_dashboard_dir}
mv %{buildroot}%{python3_sitelib}/openstack_dashboard/ %{buildroot}%{http_dashboard_dir}
install -m 755 manage.py %{buildroot}%{http_dashboard_dir}/manage.py
# Create a local_settings.py
mv %{buildroot}%{http_dashboard_dir}/openstack_dashboard/local/local_settings.py{.example,}
# create root and static files
install -m 0755 -d %{buildroot}%{http_dashboard_dir}/static
install -m 0755 -d %{buildroot}%{http_dashboard_dir}/media
pushd %{buildroot}%{http_dashboard_dir}
PYTHONPATH=%{buildroot}%{python3_sitelib} python3 manage.py collectstatic --noinput
popd
# cleanup after manage.py run
rm -v %{buildroot}%{http_dashboard_dir}/openstack_dashboard/local/.secret_key_store
rm -v %{buildroot}%{http_dashboard_dir}/openstack_dashboard/local/*secret_key_store*
# Remove duplicate files
rm -f %{buildroot}%{http_dashboard_dir}/openstack_dashboard/.eslintrc
install -D -m 644 %{SOURCE1} %{buildroot}%{apache_conf_dir}/openstack-dashboard.conf
%files
%doc README.rst
%{http_dashboard_dir}
%attr(0755, %{apache_user}, %{apache_group}) %{http_dashboard_dir}/
%{apache_conf_dir}/openstack-dashboard.conf
%files -n python3-horizon
%license LICENSE
%{python3_sitelib}/horizon
%{python3_sitelib}/horizon-*.egg-info
%files -n python3-openstack_auth
%license LICENSE
%{python3_sitelib}/openstack_auth
%changelog
* Thu Feb 25 2021 wangxiyuan <wangxiyuan1007@gmail.com>
- Fix httpd config error
* Sat Feb 20 2021 huangtianhua <huangtianhua223@gmail.com>
- Change to use python-enmerkar instead of django-babel
* Tus Feb 09 2021 wangxiyuan <wangxiyuan1007@gmail.com>
- Init the first openstack victoria release