tested on Slackware64/amd64 14.2

git clone https://github.com/openstack/nova.git
cd nova/
#git checkout stable/pike # fails, see note below
sbopkg -i pip
pip install -U -r requirements.txt 
#python setup.py --help-commands
python setup.py install
cp -R etc/nova/ /etc/
pip install libvirt-python
ps aux | grep libvirtd

cd /etc/nova/
wget -O - https://docs.openstack.org/nova/pike/_downloads/nova.conf.sample > pike
wget -O - https://docs.openstack.org/nova/latest/_downloads/nova.conf.sample > latest
cleanconf pike > pike.clean
cleanconf latest > latest.clean
diff pike.clean latest.clean
cp latest.clean nova.conf
vi nova.conf

the usual stuff from the official guide +

[DEFAULT]
compute_driver = libvirt.LibvirtDriver

[libvirt]
virt_type = xen

mkdir -p /var/lock/nova/
mkdir -p /var/lib/nova/tmp/
mkdir -p /var/log/nova/

nmap -p 5000,8778,9292,11211,35357 controller
nmap -p 6080 controller

#tail -F /var/log/nova/nova-compute.log
ps aux | grep nova-compute
/usr/bin/nova-compute --config-file=/etc/nova/nova.conf --log-file=/var/log/nova/nova-compute.log

on the controller node (may be a XEN guest),

. admin-openrc
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
openstack hypervisor list

you should now be able to see Type = Xen into the Dashboard,

Admin / Compute / Hypervisors
Hypervisor tab

libvirt

See the XEN // Slackware dom0 install guide.

kvm vs xen compute node

if the compute node is rather a KVM one instead of XEN, you will also need Qemu,

#sbopkg -i libcacard
sbopkg -i spice-protocol
sbopkg -i celt051
sbopkg -i spice

#fetch https://slackbuilds.org/repository/14.2/system/qemu/
vi qemu.SlackBuild

#AUDIODRIVERS=${AUDIODRIVERS:-pa,alsa,oss,sdl}
AUDIODRIVERS=${AUDIODRIVERS:-alsa,oss}

  --disable-gtk \
  --disable-sdl \

installpkg /tmp/qemu-2.9.0-x86_64-1_SBo.tgz
mv /tmp/*.tgz ~/builds/

and some KVM kernel module,

modprobe kvm-intel
#kvm-amd
lsmod | grep kvm

troubleshooting

start from scratch,

rm -rf /etc/nova/
ll /usr/bin/nova-*
rm -f /usr/bin/nova-*

pip freeze | xargs pip uninstall -y
pip freeze

ll /usr/lib64/python2.7/site-packages/nova/
rm -rf /usr/lib64/python2.7/site-packages/nova/

note. using queens/dev version, pike fails with,

TypeError: __init__() got an unexpected keyword argument 'retry_on_request'

note. when trying to openstack user create --domain default --password-prompt placement from the compute node,

ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option

==> use the appropriate WCGI script corresponding to the branch you are using.

note. when trying to /usr/bin/nova-compute --config-file=/etc/nova/nova.conf --log-file=/var/log/nova/nova-compute.log,

Error starting thread.: PlacementNotConfigured: This compute is not configured to talk to the placement service. Configure the [placement] section of nova.conf and restart the service.

==> nevermind the deprecated warning, use os_region_name and NOT region_name !

==> besides, python-openstackclient brings one more python package,

git clone https://github.com/openstack/python-openstackclient.git
cd python-openstackclient/
pip install -U -r requirements.txt 
#python setup.py --help-commands
python setup.py install

gives,

Collecting python-novaclient>=9.1.0 (from -r requirements.txt (line 16))
  Downloading python_novaclient-9.1.1-py2.py3-none-any.whl (313kB)
    100% |################################| 317kB 1.8MB/s

checking connection,

vi admin-openrc
source admin-openrc
openstack service list

note. when trying to register the compute node,

Failed to connect to libvirt: [Errno 99] Cannot assign requested address

==> loopback interface down?...

references

trash

(database is not even used, keeping the default)

ll /var/lib/nova/nova_api.sqlite
ll /var/lib/nova/nova.sqlite
touch /var/lib/nova/nova_api.sqlite
touch /var/lib/nova/nova.sqlite