diff --git a/nova-22.0.0.tar.gz b/nova-17.0.13.tar.gz
similarity index 50%
rename from nova-22.0.0.tar.gz
rename to nova-17.0.13.tar.gz
index c88bb5970d0ee4e8f891b11d559ff92dac5e0eab..40fbed1b31ed2bc142f1422332a1f83512df943b 100644
Binary files a/nova-22.0.0.tar.gz and b/nova-17.0.13.tar.gz differ
diff --git a/nova-dist.conf b/nova-dist.conf
index a749bbeb9d4be940effaf1d46a8208888b09bf96..6c793ab360117bbbf5873b7bdd37b175a61dc451 100644
--- a/nova-dist.conf
+++ b/nova-dist.conf
@@ -2,6 +2,10 @@
log_dir = /var/log/nova
state_path = /var/lib/nova
lock_path = /var/lib/nova/tmp
+dhcpbridge = /usr/bin/nova-dhcpbridge
+dhcpbridge_flagfile = /usr/share/nova/nova-dist.conf
+dhcpbridge_flagfile = /etc/nova/nova.conf
+force_dhcp_release = True
injected_network_template = /usr/share/nova/interfaces.template
libvirt_nonblocking = True
libvirt_inject_partition = -1
diff --git a/nova-placement-api.conf b/nova-placement-api.conf
new file mode 100644
index 0000000000000000000000000000000000000000..fe8c3ad27a9a8e83c5bcf027219f3f8265f457f9
--- /dev/null
+++ b/nova-placement-api.conf
@@ -0,0 +1,25 @@
+Listen 8778
+
+
+ WSGIProcessGroup nova-placement-api
+ WSGIApplicationGroup %{GLOBAL}
+ WSGIPassAuthorization On
+ WSGIDaemonProcess nova-placement-api processes=3 threads=1 user=nova group=nova
+ WSGIScriptAlias / /usr/bin/nova-placement-api
+ = 2.4>
+ ErrorLogFormat "%M"
+
+ ErrorLog /var/log/nova/nova-placement-api.log
+ #SSLEngine On
+ #SSLCertificateFile ...
+ #SSLCertificateKeyFile ...
+
+
+Alias /nova-placement-api /usr/bin/nova-placement-api
+
+ SetHandler wsgi-script
+ Options +ExecCGI
+ WSGIProcessGroup nova-placement-api
+ WSGIApplicationGroup %{GLOBAL}
+ WSGIPassAuthorization On
+
\ No newline at end of file
diff --git a/openstack-nova-cells.service b/openstack-nova-cells.service
new file mode 100644
index 0000000000000000000000000000000000000000..32a8ef94ca7a328467d07042d582113bcd3ed58f
--- /dev/null
+++ b/openstack-nova-cells.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=OpenStack Nova Cells Server
+After=syslog.target network.target
+
+[Service]
+Type=notify
+NotifyAccess=all
+TimeoutStartSec=0
+Restart=always
+User=nova
+ExecStart=/usr/bin/nova-cells
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/openstack-nova-console.service b/openstack-nova-console.service
new file mode 100644
index 0000000000000000000000000000000000000000..e88cf69ad4721d1776c2399a64fc022845222c1c
--- /dev/null
+++ b/openstack-nova-console.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=OpenStack Nova Console Proxy Server
+After=syslog.target network.target
+
+[Service]
+Type=notify
+NotifyAccess=all
+TimeoutStartSec=0
+Restart=always
+User=nova
+ExecStart=/usr/bin/nova-console
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/openstack-nova-consoleauth.service b/openstack-nova-consoleauth.service
new file mode 100644
index 0000000000000000000000000000000000000000..25abf29d22db48e6eebf3ecb9f7552bcc7d77a9c
--- /dev/null
+++ b/openstack-nova-consoleauth.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=OpenStack Nova VNC console auth Server
+After=syslog.target network.target
+
+[Service]
+Type=notify
+NotifyAccess=all
+TimeoutStartSec=0
+Restart=always
+User=nova
+ExecStart=/usr/bin/nova-consoleauth
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/openstack-nova-network.service b/openstack-nova-network.service
new file mode 100644
index 0000000000000000000000000000000000000000..d707d31c6926c28c3ec9f615af93de4263b425cc
--- /dev/null
+++ b/openstack-nova-network.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=OpenStack Nova Network Server
+After=syslog.target network.target
+
+[Service]
+Type=notify
+NotifyAccess=all
+TimeoutStartSec=0
+Restart=always
+User=nova
+ExecStart=/usr/bin/nova-network
+
+# Don't kill dnsmasq on shutdown (#805947)
+KillMode=process
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/openstack-nova-xvpvncproxy.service b/openstack-nova-xvpvncproxy.service
new file mode 100644
index 0000000000000000000000000000000000000000..07df7883490f1ef71164ec8df09cec0f42f1b0dc
--- /dev/null
+++ b/openstack-nova-xvpvncproxy.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=OpenStack Nova XVP VncProxy Server
+After=syslog.target network.target
+
+[Service]
+Type=simple
+User=nova
+ExecStart=/usr/bin/nova-xvpvncproxy
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/openstack-nova.spec b/openstack-nova.spec
index a42be9566b3a23a9d38893133d7dbb062864d627..227cee856c3c7a24d7fe5576ebc6c3e180733e95 100644
--- a/openstack-nova.spec
+++ b/openstack-nova.spec
@@ -1,32 +1,54 @@
%{!?upstream_version: %global upstream_version %{version}%{?milestone}}
%global with_doc 0
-%global distro openEuler
-%global qemu_version 3.1.0
-%global libvirt_version 5.0.0
+%global with_trans %{!?_without_trans:1}%{?_without_trans:0}
+%global distro openEuler
+
+%global common_desc \
+OpenStack Compute (codename Nova) is open source software designed to \
+provision and manage large networks of virtual machines, creating a \
+redundant and scalable cloud computing platform. It gives you the \
+software, control panels, and APIs required to orchestrate a cloud, \
+including running instances, managing networks, and controlling access \
+through users and projects. OpenStack Compute strives to be both \
+hardware and hypervisor agnostic, currently supporting a variety of \
+standard hardware configurations and seven major hypervisors.
Name: openstack-nova
-Epoch: 1
-Version: 22.0.0
-Release: 2%{?dist}
+# Liberty semver reset
+# https://review.openstack.org/#/q/I6a35fa0dda798fad93b804d00a46af80f08d475c,n,z
+Version: 17.0.13
+Release: 2
Summary: OpenStack Compute (nova)
+
License: Apache-2.0
URL: http://openstack.org/projects/compute/
Source0: https://tarballs.openstack.org/nova/nova-%{upstream_version}.tar.gz
+
+
Source1: nova-dist.conf
Source6: nova.logrotate
+
Source10: openstack-nova-api.service
Source12: openstack-nova-compute.service
+Source13: openstack-nova-network.service
Source15: openstack-nova-scheduler.service
+Source18: openstack-nova-xvpvncproxy.service
+Source19: openstack-nova-console.service
+Source20: openstack-nova-consoleauth.service
Source25: openstack-nova-metadata-api.service
Source26: openstack-nova-conductor.service
+Source27: openstack-nova-cells.service
Source28: openstack-nova-spicehtml5proxy.service
Source29: openstack-nova-novncproxy.service
Source31: openstack-nova-serialproxy.service
Source32: openstack-nova-os-compute-api.service
+
Source22: nova-ifc-template
Source24: nova-sudoers
Source30: openstack-nova-novncproxy.sysconfig
+Source33: nova-placement-api.conf
Source34: policy.json
+
Source35: nova_migration-sudoers
Source36: nova-ssh-config
Source37: nova-migration-wrapper
@@ -34,304 +56,389 @@ Source38: nova_migration_identity
Source39: nova_migration_authorized_keys
Source40: nova_migration-rootwrap.conf
Source41: nova_migration-rootwrap_cold_migration
-BuildArch: noarch
+BuildArch: noarch
BuildRequires: openstack-macros
BuildRequires: intltool
-BuildRequires: python3-devel
+BuildRequires: python2-devel
BuildRequires: git
-BuildRequires: python3-oslo-cache
-BuildRequires: python3-os-traits
-BuildRequires: python3-setuptools
-BuildRequires: python3-netaddr
-BuildRequires: python3-pbr
-BuildRequires: python3-pip
-BuildRequires: python3-six
-BuildRequires: python3-oslo-i18n
-BuildRequires: python3-cryptography >= 2.1
-BuildRequires: python3-oslo-policy
-BuildRequires: python3-barbicanclient
-BuildRequires: python3-ddt
-BuildRequires: python3-ironicclient
-BuildRequires: python3-os-testr
-BuildRequires: python3-os-vif
-BuildRequires: python3-oslo-rootwrap
-BuildRequires: python3-oslotest
-BuildRequires: python3-osprofiler
-BuildRequires: python3-subunit
-BuildRequires: python3-testrepository
-BuildRequires: python3-testresources
-BuildRequires: python3-testscenarios
-BuildRequires: python3-tooz
-BuildRequires: python3-oslo-vmware
-BuildRequires: python3-cursive
-BuildRequires: python3-os-service-types
-BuildRequires: python3-os-resource-classes
-
-BuildRequires: python3-requests-mock
-BuildRequires: /usr/bin/pathfix.py
-
-Requires: openstack-nova-compute = %{epoch}:%{version}-%{release}
-Requires: openstack-nova-scheduler = %{epoch}:%{version}-%{release}
-Requires: openstack-nova-api = %{epoch}:%{version}-%{release}
-Requires: openstack-nova-conductor = %{epoch}:%{version}-%{release}
-Requires: openstack-nova-novncproxy = %{epoch}:%{version}-%{release}
-Requires: openstack-nova-migration = %{epoch}:%{version}-%{release}
+BuildRequires: python2-sphinx
+BuildRequires: python2-oslo-cache
+BuildRequires: python2-openstackdocstheme
+BuildRequires: python2-os-traits
+BuildRequires: python2-setuptools
+BuildRequires: python2-netaddr
+BuildRequires: python2-pbr
+#BuildRequires: python2-d2to1
+BuildRequires: python2-six
+BuildRequires: python2-oslo-i18n
+BuildRequires: python2-cryptography >= 1.6
+BuildRequires: python2-oslo-policy
+# Required for unit tests
+BuildRequires: python2-barbicanclient
+BuildRequires: python2-ddt
+BuildRequires: python2-ironicclient
+BuildRequires: python2-mox3
+BuildRequires: python2-os-testr
+BuildRequires: python2-os-vif
+BuildRequires: python2-oslo-rootwrap
+BuildRequires: python2-oslotest
+BuildRequires: python2-osprofiler
+BuildRequires: python2-requests-mock
+BuildRequires: python2-subunit
+BuildRequires: python2-testrepository
+BuildRequires: python2-testresources
+BuildRequires: python2-testscenarios
+BuildRequires: python2-tooz
+BuildRequires: python2-oslo-vmware
+BuildRequires: python2-cursive
+BuildRequires: python2-os-service-types
+# Required by build_sphinx for man and doc building
+# BuildRequires: python2-sphinxcontrib-actdiag
+# BuildRequires: python2-sphinxcontrib-seqdiag
+
+Requires: openstack-nova-compute = %{version}-%{release}
+Requires: openstack-nova-scheduler = %{version}-%{release}
+Requires: openstack-nova-api = %{version}-%{release}
+Requires: openstack-nova-network = %{version}-%{release}
+Requires: openstack-nova-conductor = %{version}-%{release}
+Requires: openstack-nova-console = %{version}-%{release}
+Requires: openstack-nova-cells = %{version}-%{release}
+Requires: openstack-nova-novncproxy = %{version}-%{release}
+Requires: openstack-nova-placement-api = %{version}-%{release}
+Requires: openstack-nova-migration = %{version}-%{release}
+
+
%description
-OpenStack Compute (Nova)
+%{common_desc}
%package common
Summary: Components common to all OpenStack Nova services
-Obsoletes: openstack-nova-cert <= 1:16.0.0-1
-Obsoletes: openstack-nova-cells < 1:20.0.0
-Requires: python3-nova = %{epoch}:%{version}-%{release}
-%{?systemd_ordering}
+Obsoletes: openstack-nova-cert <= 16.0.0-1
+
+Requires: python2-nova = %{version}-%{release}
+%{?systemd_requires}
Requires(pre): shadow-utils
BuildRequires: systemd
-BuildRequires: python3-castellan >= 0.16.0
-BuildRequires: python3-glanceclient
-BuildRequires: python3-keystonemiddleware
-BuildRequires: python3-microversion-parse >= 0.2.1
-BuildRequires: python3-os-brick
-BuildRequires: python3-oslo-db
-BuildRequires: python3-oslo-reports
-BuildRequires: python3-oslo-service
-BuildRequires: python3-oslo-versionedobjects
-BuildRequires: python3-paramiko
-BuildRequires: python3-babel
-BuildRequires: python3-lxml
-BuildRequires: python3-websockify >= 0.9.0
+# Required to build nova.conf.sample
+BuildRequires: python2-castellan >= 0.16.0
+BuildRequires: python2-glanceclient
+BuildRequires: python2-keystonemiddleware
+BuildRequires: python2-lxml
+BuildRequires: python2-microversion-parse >= 0.1.3
+BuildRequires: python2-os-brick
+BuildRequires: python2-oslo-db
+BuildRequires: python2-oslo-reports
+BuildRequires: python2-oslo-service
+BuildRequires: python2-oslo-versionedobjects
+BuildRequires: python2-paramiko
+BuildRequires: python2-websockify
+# Required to compile translation files
+BuildRequires: python2-babel
+
+# remove old service subpackage
+Obsoletes: %{name}-objectstore
%description common
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains scripts, config and dependencies shared
between all the OpenStack nova services.
+
%package compute
Summary: OpenStack Nova Virtual Machine control service
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
+
+Requires: openstack-nova-common = %{version}-%{release}
Requires: curl
Requires: iscsi-initiator-utils
Requires: iptables
Requires: iptables-services
Requires: ipmitool
+Requires: python-libguestfs
+Requires: libvirt-python
+Requires: libvirt-daemon-kvm
Requires: /usr/bin/virsh
+%if 0%{?rhel}==0
+Requires: libvirt-daemon-lxc
+%endif
Requires: openssh-clients
Requires: rsync
Requires: lvm2
-Requires: python3-cinderclient >= 3.3.0
+Requires: python2-cinderclient >= 3.3.0
Requires: genisoimage
-Requires(pre): qemu >= %{qemu_version}
-Requires(pre): qemu-block-rbd >= %{qemu_version}
-Requires(pre): qemu-block-ssh >= %{qemu_version}
-Requires(pre): python3-libvirt >= %{libvirt_version}
-Requires(pre): libvirt-daemon-driver-nodedev >= %{libvirt_version}
-Requires(pre): libvirt-daemon-driver-nwfilter >= %{libvirt_version}
-Requires(pre): libvirt-daemon-driver-secret >= %{libvirt_version}
-Requires(pre): libvirt-daemon-driver-qemu >= %{libvirt_version}
-Requires(pre): libvirt-daemon-driver-storage-core >= %{libvirt_version}
-
+Requires(pre): qemu >= 2.10.0
+Requires(pre): libvirt-python >= 3.9.0
+Requires(pre): libvirt-daemon-kvm >= 3.9.0
+Requires: bridge-utils
Requires: sg3_utils
Requires: sysfsutils
Requires: libosinfo
-Requires: python3-libguestfs
-Requires: python3-libvirt
%description compute
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova service for controlling Virtual Machines.
+
+%package network
+Summary: OpenStack Nova Network control service
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: radvd
+Requires: bridge-utils
+Requires: dnsmasq
+Requires: dnsmasq-utils
+Requires: ebtables
+Requires: conntrack-tools
+
+%description network
+%{common_desc}
+
+This package contains the Nova service for controlling networking.
+
+
%package scheduler
Summary: OpenStack Nova VM distribution service
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
+
+Requires: openstack-nova-common = %{version}-%{release}
%description scheduler
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the service for scheduling where
to run Virtual Machines in the cloud.
+
%package api
Summary: OpenStack Nova API services
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
-Requires: python3-cinderclient >= 3.3.0
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: python2-cinderclient >= 3.3.0
%description api
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova services providing programmatic access.
%package conductor
Summary: OpenStack Nova Conductor services
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
+
+Requires: openstack-nova-common = %{version}-%{release}
%description conductor
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova services providing database access for
the compute service
+%package console
+Summary: OpenStack Nova console access services
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: python2-websockify >= 0.8.0
+
+%description console
+%{common_desc}
+
+This package contains the Nova services providing
+console access services to Virtual Machines.
+
+%package cells
+Summary: OpenStack Nova Cells services
+
+Requires: openstack-nova-common = %{version}-%{release}
+
+%description cells
+%{common_desc}
+
+This package contains the Nova Cells service providing additional
+scaling and (geographic) distribution for compute services.
+
%package novncproxy
Summary: OpenStack Nova noVNC proxy service
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
+
+Requires: openstack-nova-common = %{version}-%{release}
Requires: novnc
-Requires: python3-websockify >= 0.9.0
+Requires: python2-websockify >= 0.8.0
+
%description novncproxy
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova noVNC Proxy service that can proxy
VNC traffic over browser websockets connections.
%package spicehtml5proxy
Summary: OpenStack Nova Spice HTML5 console access service
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
-Requires: python3-websockify >= 0.9.0
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: python2-websockify >= 0.8.0
%description spicehtml5proxy
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova services providing the
spice HTML5 console access service to Virtual Machines.
%package serialproxy
Summary: OpenStack Nova serial console access service
-Requires: openstack-nova-common = %{epoch}:%{version}-%{release}
-Requires: python3-websockify >= 0.9.0
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: python2-websockify >= 0.8.0
%description serialproxy
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains the Nova services providing the
serial console access service to Virtual Machines.
+%package placement-api
+Summary: OpenStack Nova Placement APIservice
+
+Requires: openstack-nova-common = %{version}-%{release}
+Requires: httpd
+Requires: python2-mod_wsgi
+
+%description placement-api
+%{common_desc}
+
+This package contains the Nova placement service, which will initially
+allow for the management of resource providers.
+
%package migration
Summary: OpenStack Nova Migration
-Requires: openstack-nova-compute = %{epoch}:%{version}-%{release}
+
+Requires: openstack-nova-compute = %{version}-%{release}
%description migration
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains scripts and config to support VM migration in Nova.
-%package -n python3-nova
+%package -n python2-nova
Summary: Nova Python libraries
-%{?python_provide:%python_provide python3-nova}
+
Requires: openssl
+# Require openssh for ssh-keygen
Requires: openssh
Requires: sudo
-Requires: python3-paramiko >= 2.7.1
-Requires: python3-eventlet >= 0.22.0
-Requires: python3-iso8601 >= 0.1.11
-Requires: python3-netaddr >= 0.7.18
-Requires: python3-boto
-Requires: python3-stevedore >= 1.20.0
-Requires: python3-sqlalchemy
-Requires: python3-alembic >= 0.8.0
-Requires: python3-routes >= 2.3.1
-Requires: python3-webob >= 1.8.2
-Requires: python3-castellan >= 0.16.0
-Requires: python3-cryptography >= 2.7
-Requires: python3-cursive >= 0.2.1
-Requires: python3-dataclasses >= 0.7
-Requires: python3-glanceclient >= 1:2.8.0
-Requires: python3-greenlet >= 0.4.13
-Requires: python3-keystonemiddleware >= 4.20.0
-Requires: python3-keystoneauth1 >= 3.16.0
-Requires: python3-jinja2
-Requires: python3-jsonschema >= 2.6.0
-Requires: python3-microversion-parse >= 0.2.1
-Requires: python3-neutronclient >= 6.7.0
-Requires: python3-novaclient >= 2.30.1
-Requires: python3-openstacksdk >= 0.35.0
-Requires: python3-os-brick >= 3.1.0
-Requires: python3-os-resource-classes >= 0.4.0
-Requires: python3-os-traits >= 2.4.0
-Requires: python3-oslo-cache >= 1.26.0
-Requires: python3-oslo-concurrency >= 3.29.0
-Requires: python3-oslo-config >= 6.8.0
-Requires: python3-oslo-context >= 2.22.0
-Requires: python3-oslo-db >= 4.44.0
-Requires: python3-oslo-i18n >= 3.15.3
-Requires: python3-oslo-log >= 3.36.0
-Requires: python3-oslo-messaging >= 10.3.0
-Requires: python3-oslo-middleware >= 3.31.0
-Requires: python3-oslo-policy >= 3.4.0
-Requires: python3-oslo-privsep >= 1.33.2
-Requires: python3-oslo-reports >= 1.18.0
-Requires: python3-oslo-rootwrap >= 5.8.0
-Requires: python3-oslo-serialization >= 2.21.1
-Requires: python3-oslo-service >= 1.40.1
-Requires: python3-oslo-upgradecheck >= 0.1.1
-Requires: python3-oslo-utils >= 4.5.0
-Requires: python3-oslo-versionedobjects >= 1.35.0
-Requires: python3-os-vif >= 1.14.0
-Requires: python3-oslo-vmware >= 1.16.0
-Requires: python3-pbr
-Requires: python3-prettytable >= 0.7.1
-Requires: python3-psutil
-Requires: python3-requests >= 2.22.0
-Requires: python3-rfc3986 >= 1.2.0
-Requires: python3-six >= 1.11.0
-Requires: python3-taskflow >= 3.8.0
-Requires: python3-tooz >= 1.58.0
-Requires: python3-os-service-types >= 1.7.0
-Requires: python3-dateutil >= 2.5.3
-Requires: python3-futurist >= 1.8.0
-Requires: python3-decorator >= 4.1.0
-Requires: python3-lxml >= 4.2.3
-Requires: python3-ldap
-Requires: python3-memcached
-Requires: python3-sqlalchemy-migrate >= 0.13.0
-Requires: python3-paste
-Requires: python3-paste-deploy >= 1.5.0
-Requires: python3-netifaces >= 0.10.4
-Requires: python3-retrying
-%if 0%{?rhel} == 8
-Requires: python3-PyYAML
-%else
-Requires: python3-PyYAML >= 3.13
-%endif
-%description -n python3-nova
-OpenStack Compute (Nova)
+Requires: python2-paramiko >= 2.0
+
+Requires: python2-decorator >= 3.4.0
+Requires: python2-enum34
+Requires: python2-eventlet >= 0.18.2
+Requires: python2-iso8601 >= 0.1.11
+Requires: python2-netaddr >= 0.7.18
+Requires: python2-lxml >= 3.2.1
+Requires: python2-boto
+Requires: python2-ldap
+Requires: python2-stevedore >= 1.20.0
+
+Requires: python2-memcached
+
+Requires: python2-sqlalchemy >= 1.0.10
+Requires: python2-sqlalchemy-migrate >= 0.11.0
+Requires: python2-alembic >= 0.8.0
+
+Requires: python2-paste
+Requires: python2-paste-deploy >= 1.5.0
+Requires: python2-routes >= 2.3.1
+Requires: python2-webob >= 1.7.1
+
+Requires: python2-babel >= 2.3.4
+Requires: python2-castellan >= 0.16.0
+Requires: python2-cryptography >= 1.6
+Requires: python2-cursive >= 0.2.1
+Requires: python2-glanceclient >= 2.8.0
+Requires: python2-greenlet >= 0.4.10
+Requires: python2-keystonemiddleware >= 4.17.0
+Requires: python2-keystoneauth1 >= 3.3.0
+Requires: python2-jinja2
+Requires: python2-jsonschema >= 2.6.0
+Requires: python2-microversion-parse >= 0.1.2
+Requires: python2-netifaces >= 0.10.4
+Requires: python2-neutronclient >= 6.3.0
+Requires: python2-novaclient >= 2.30.1
+Requires: python2-os-brick >= 2.2.0
+Requires: python2-os-traits
+Requires: python2-oslo-cache >= 1.26.0
+Requires: python2-oslo-concurrency >= 3.25.0
+Requires: python2-oslo-config >= 5.1.0
+Requires: python2-oslo-context >= 2.19.2
+Requires: python2-oslo-db >= 4.27.0
+Requires: python2-oslo-i18n >= 3.15.3
+Requires: python2-oslo-log >= 3.36.0
+Requires: python2-oslo-messaging >= 5.29.0
+Requires: python2-oslo-middleware >= 3.31.0
+Requires: python2-oslo-policy >= 1.30.0
+Requires: python2-oslo-privsep >= 1.23.0
+Requires: python2-oslo-reports >= 1.18.0
+Requires: python2-oslo-rootwrap >= 5.8.0
+Requires: python2-oslo-serialization >= 2.18.0
+Requires: python2-oslo-service >= 1.24.0
+Requires: python2-oslo-utils >= 3.33.0
+Requires: python2-oslo-versionedobjects >= 1.31.2
+Requires: python2-os-vif >= 1.7.0
+Requires: python2-oslo-vmware >= 1.16.0
+Requires: python2-pbr
+Requires: python2-prettytable >= 0.7.1
+Requires: python2-psutil
+Requires: python2-requests >= 2.14.2
+Requires: python2-rfc3986 >= 0.3.1
+Requires: python2-six >= 1.10.0
+Requires: python2-taskflow >= 2.16.0
+Requires: python2-tooz >= 1.58.0
+Requires: python2-os-service-types >= 1.1.0
+
+%description -n python2-nova
+%{common_desc}
+
This package contains the nova Python library.
-%package -n python3-nova-tests
+%package -n python2-nova-tests
Summary: Nova tests
-%{?python_provide:%python_provide python3-nova-tests}
-Requires: openstack-nova = %{epoch}:%{version}-%{release}
+Requires: python2-nova = %{version}-%{release}
+
+%description -n python2-nova-tests
+%{common_desc}
-%description -n python3-nova-tests
-OpenStack Compute (Nova)
This package contains the nova Python library.
%if 0%{?with_doc}
%package doc
Summary: Documentation for OpenStack Compute
+
BuildRequires: graphviz
-BuildRequires: python3-openstackdocstheme
-BuildRequires: python3-sphinxcontrib-actdiag
-BuildRequires: python3-sphinxcontrib-seqdiag
-BuildRequires: python3-boto
-BuildRequires: python3-eventlet
-BuildRequires: python3-barbicanclient
-BuildRequires: python3-cinderclient
-BuildRequires: python3-keystoneclient
-BuildRequires: python3-neutronclient
-BuildRequires: python3-os-win
-BuildRequires: python3-oslo-config
-BuildRequires: python3-oslo-log
-BuildRequires: python3-oslo-messaging
-BuildRequires: python3-oslo-utils
-BuildRequires: python3-rfc3986 >= 1.1.0
-BuildRequires: python3-routes
-BuildRequires: python3-sphinx
-BuildRequires: python3-sphinxcontrib-actdiag
-BuildRequires: python3-sphinxcontrib-seqdiag
-BuildRequires: python3-sqlalchemy
-BuildRequires: python3-webob
-BuildRequires: python3-iso8601
-BuildRequires: python3-redis
-BuildRequires: python3-zmq
-BuildRequires: python3-sqlalchemy-migrate
+
+# Required to build module documents
+BuildRequires: python2-boto
+BuildRequires: python2-eventlet
+BuildRequires: python2-barbicanclient
+BuildRequires: python2-cinderclient
+BuildRequires: python2-keystoneclient
+BuildRequires: python2-neutronclient
+# BuildRequires: python2-os-win
+BuildRequires: python2-oslo-config
+BuildRequires: python2-oslo-log
+BuildRequires: python2-oslo-messaging
+BuildRequires: python2-oslo-utils
+BuildRequires: python2-redis
+BuildRequires: python2-rfc3986 >= 0.2.2
+BuildRequires: python2-routes
+# BuildRequires: python2-sphinxcontrib-actdiag
+# BuildRequires: python2-sphinxcontrib-seqdiag
+BuildRequires: python2-sqlalchemy
+BuildRequires: python2-webob
+# BuildRequires: python2-zmq
+# while not strictly required, quiets the build down when building docs.
+BuildRequires: python2-sqlalchemy-migrate, python2-iso8601
%description doc
-OpenStack Compute (Nova)
+%{common_desc}
+
This package contains documentation files for nova.
%endif
@@ -339,38 +446,59 @@ This package contains documentation files for nova.
%autosetup -n nova-%{upstream_version} -S git
find . \( -name .gitignore -o -name .placeholder \) -delete
+
find nova -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} +
+
+# Remove the requirements file so that pbr hooks don't add it
+# to distutils requiers_dist config
%py_req_cleanup
%build
PYTHONPATH=. oslo-config-generator --config-file=etc/nova/nova-config-generator.conf
+# Generate a sample policy.yaml file for documentation purposes only
PYTHONPATH=. oslopolicy-sample-generator --config-file=etc/nova/nova-policy-generator.conf
-%{py3_build}
-%{__python3} setup.py compile_catalog -d build/lib/nova/locale -D nova
+%{__python2} setup.py build
+
+# Generate i18n files
+# (amoralej) we can remove '-D nova' once https://review.openstack.org/#/c/439500/ is merged
+%{__python2} setup.py compile_catalog -d build/lib/nova/locale -D nova
+
+# Avoid http://bugzilla.redhat.com/1059815. Remove when that is closed
sed -i 's|group/name|group;name|; s|\[DEFAULT\]/|DEFAULT;|' etc/nova/nova.conf.sample
+
+# Programmatically update defaults in sample config
+# which is installed at /etc/nova/nova.conf
+
+# First we ensure all values are commented in appropriate format.
+# Since icehouse, there was an uncommented keystone_authtoken section
+# at the end of the file which mimics but also conflicted with our
+# distro editing that had been done for many releases.
sed -i '/^[^#[]/{s/^/#/; s/ //g}; /^#[^ ]/s/ = /=/' etc/nova/nova.conf.sample
+# TODO: Make this more robust
+# Note it only edits the first occurrence, so assumes a section ordering in sample
+# and also doesn't support multi-valued variables like dhcpbridge_flagfile.
while read name eq value; do
test "$name" && test "$value" || continue
sed -i "0,/^# *$name=/{s!^# *$name=.*!#$name=$value!}" etc/nova/nova.conf.sample
done < %{SOURCE1}
%install
-%{py3_install}
+%{__python2} setup.py install -O1 --skip-build --root %{buildroot}
-export PYTHONPATH=.
%if 0%{?with_doc}
-sphinx-build -b html doc/source doc/build/html
+sphinx-build-2 -b html doc/source doc/build/html
rm -rf doc/build/html/.{doctrees,buildinfo}
%endif
%if 0%{?with_doc}
-sphinx-build -b man doc/source doc/build/man
+sphinx-build-2 -b man doc/source doc/build/man
mkdir -p %{buildroot}%{_mandir}/man1
install -p -D -m 644 doc/build/man/*.1 %{buildroot}%{_mandir}/man1/
%endif
+# Setup directories
install -d -m 755 %{buildroot}%{_sharedstatedir}/nova
install -d -m 755 %{buildroot}%{_sharedstatedir}/nova/buckets
install -d -m 755 %{buildroot}%{_sharedstatedir}/nova/instances
@@ -379,19 +507,25 @@ install -d -m 755 %{buildroot}%{_sharedstatedir}/nova/networks
install -d -m 755 %{buildroot}%{_sharedstatedir}/nova/tmp
install -d -m 750 %{buildroot}%{_localstatedir}/log/nova
install -d -m 700 %{buildroot}%{_sharedstatedir}/nova/.ssh
+
+# Install config files
install -d -m 755 %{buildroot}%{_sysconfdir}/nova
install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datarootdir}/nova/nova-dist.conf
install -p -D -m 640 etc/nova/nova.conf.sample %{buildroot}%{_sysconfdir}/nova/nova.conf
install -p -D -m 640 etc/nova/rootwrap.conf %{buildroot}%{_sysconfdir}/nova/rootwrap.conf
install -p -D -m 640 etc/nova/api-paste.ini %{buildroot}%{_sysconfdir}/nova/api-paste.ini
+install -p -D -m 640 %{SOURCE33} %{buildroot}%{_sysconfdir}/httpd/conf.d/00-nova-placement-api.conf
install -d -m 755 %{buildroot}%{_sysconfdir}/nova/migration
install -p -D -m 600 %{SOURCE38} %{buildroot}%{_sysconfdir}/nova/migration/identity
install -p -D -m 644 %{SOURCE39} %{buildroot}%{_sysconfdir}/nova/migration/authorized_keys
install -p -D -m 640 %{SOURCE40} %{buildroot}%{_sysconfdir}/nova/migration/rootwrap.conf
install -d -m 755 %{buildroot}%{_sysconfdir}/nova/migration/rootwrap.d
install -p -D -m 640 %{SOURCE41} %{buildroot}%{_sysconfdir}/nova/migration/rootwrap.d/cold_migration.filters
+
+# Install empty policy.json file to cover rpm updates with untouched policy files.
install -p -D -m 640 %{SOURCE34} %{buildroot}%{_sysconfdir}/nova/policy.json
+# Install version info file
cat > %{buildroot}%{_sysconfdir}/nova/release < os_xenapi/client.py </dev/null || groupadd -r nova_migration
getent passwd nova_migration >/dev/null || \
useradd -r -g nova_migration -d / -s /bin/bash -c "OpenStack Nova Migration" nova_migration
exit 0
+
%post compute
%systemd_post %{name}-compute.service
+%post network
+%systemd_post %{name}-network.service
%post scheduler
%systemd_post %{name}-scheduler.service
%post api
%systemd_post %{name}-api.service %{name}-metadata-api.service %{name}-os-compute-api.service
%post conductor
%systemd_post %{name}-conductor.service
+%post console
+%systemd_post %{name}-console.service %{name}-consoleauth.service %{name}-xvpvncproxy.service
+%post cells
+%systemd_post %{name}-cells.service
%post novncproxy
%systemd_post %{name}-novncproxy.service
%post spicehtml5proxy
%systemd_post %{name}-spicehtml5proxy.service
%post serialproxy
%systemd_post %{name}-serialproxy.service
+
%preun compute
%systemd_preun %{name}-compute.service
+%preun network
+%systemd_preun %{name}-network.service
%preun scheduler
%systemd_preun %{name}-scheduler.service
%preun api
%systemd_preun %{name}-api.service %{name}-metadata-api.service %{name}-os-compute-api.service
%preun conductor
%systemd_preun %{name}-conductor.service
+%preun console
+%systemd_preun %{name}-console.service %{name}-consoleauth.service %{name}-xvpvncproxy.service
+%preun cells
+%systemd_preun %{name}-cells.service
%preun novncproxy
%systemd_preun %{name}-novncproxy.service
%preun spicehtml5proxy
%systemd_preun %{name}-spicehtml5proxy.service
%preun serialproxy
%systemd_preun %{name}-serialproxy.service
+
%postun compute
%systemd_postun_with_restart %{name}-compute.service
+%postun network
+%systemd_postun_with_restart %{name}-network.service
%postun scheduler
%systemd_postun_with_restart %{name}-scheduler.service
%postun api
%systemd_postun_with_restart %{name}-api.service %{name}-metadata-api.service %{name}-os-compute-api.service
%postun conductor
%systemd_postun_with_restart %{name}-conductor.service
+%postun console
+%systemd_postun_with_restart %{name}-console.service %{name}-consoleauth.service %{name}-xvpvncproxy.service
+%postun cells
+%systemd_postun_with_restart %{name}-cells.service
%postun novncproxy
%systemd_postun_with_restart %{name}-novncproxy.service
%postun spicehtml5proxy
%systemd_postun_with_restart %{name}-spicehtml5proxy.service
%postun serialproxy
%systemd_postun_with_restart %{name}-serialproxy.service
+
%files
+
%files common -f nova.lang
%license LICENSE
%doc etc/nova/policy.yaml.sample
%dir %{_datarootdir}/nova
%attr(-, root, nova) %{_datarootdir}/nova/nova-dist.conf
%{_datarootdir}/nova/interfaces.template
+%{_datarootdir}/nova/rootwrap/network.filters
%dir %{_sysconfdir}/nova
%{_sysconfdir}/nova/release
%config(noreplace) %attr(-, root, nova) %{_sysconfdir}/nova/nova.conf
@@ -551,6 +739,11 @@ exit 0
%{_unitdir}/openstack-nova-compute.service
%{_datarootdir}/nova/rootwrap/compute.filters
+%files network
+%{_bindir}/nova-network
+%{_bindir}/nova-dhcpbridge
+%{_unitdir}/openstack-nova-network.service
+
%files scheduler
%{_bindir}/nova-scheduler
%{_unitdir}/openstack-nova-scheduler.service
@@ -559,11 +752,22 @@ exit 0
%{_bindir}/nova-api*
%{_bindir}/nova-metadata-wsgi
%{_unitdir}/openstack-nova-*api.service
+%{_datarootdir}/nova/rootwrap/api-metadata.filters
%files conductor
%{_bindir}/nova-conductor
%{_unitdir}/openstack-nova-conductor.service
+%files console
+%{_bindir}/nova-console*
+%{_bindir}/nova-xvpvncproxy
+%{_unitdir}/openstack-nova-console*.service
+%{_unitdir}/openstack-nova-xvpvncproxy.service
+
+%files cells
+%{_bindir}/nova-cells
+%{_unitdir}/openstack-nova-cells.service
+
%files novncproxy
%{_bindir}/nova-novncproxy
%{_unitdir}/openstack-nova-novncproxy.service
@@ -577,6 +781,10 @@ exit 0
%{_bindir}/nova-serialproxy
%{_unitdir}/openstack-nova-serialproxy.service
+%files placement-api
+%config(noreplace) %{_sysconfdir}/httpd/conf.d/00-nova-placement-api.conf
+%{_bindir}/nova-placement-api
+
%files migration
%{_bindir}/nova-migration-wrapper
%config(noreplace) %{_sysconfdir}/sudoers.d/nova_migration
@@ -589,15 +797,15 @@ exit 0
%dir %{_sysconfdir}/nova/migration/rootwrap.d
%config(noreplace) %attr(0640, root, root) %{_sysconfdir}/nova/migration/rootwrap.d/cold_migration.filters
-%files -n python3-nova
+%files -n python2-nova
%license LICENSE
-%{python3_sitelib}/nova
-%{python3_sitelib}/nova-*.egg-info
-%exclude %{python3_sitelib}/nova/tests
+%{python2_sitelib}/nova
+%{python2_sitelib}/nova-*.egg-info
+%exclude %{python2_sitelib}/nova/tests
-%files -n python3-nova-tests
+%files -n python2-nova-tests
%license LICENSE
-%{python3_sitelib}/nova/tests
+%{python2_sitelib}/nova/tests
%if 0%{?with_doc}
%files doc
@@ -606,8 +814,8 @@ exit 0
%endif
%changelog
-* Sat Feb 20 2021 wangxiyuan
-- Fix require issue
+* Tue Jun 08 2021 zhangfan
+- Fix mod_wsgi Requires
+* Fri May 28 2021 openstack-sig
+- Package init
-* Fri Jan 15 2021 joec88
-- openEuler build version