File bms-network-setup.spec of Package bms-network-setup
%if 0%{?suse_version} >= 1000
# SUSE
%if 0%{?suse_version} < 1200
%define nosystemd 1
%else
%define nosystemd 0
%endif
%else
# REDHAT/CentOS/Oracle/Euler
%if 0%{?rhel_version} < 700 && 0%{?centos_version} < 700
%define nosystemd 1
%else
%define nosystemd 0
%endif
%endif
%if 0%{?rocky_ver} >= 8 || 0%{?almalinux_ver} >= 8
%define nosystemd 0
%endif
%if 0%{?suse_version} >= 1500 || 0%{?rhel_version} >= 800 || 0%{?centos_version} >= 800 || 0%{?fedora_version} >= 30 || 0%{?almalinux_version} >= 800 || 0%{?rocky_version} >= 800
%define use_python python3
%define py_sitelib %{python3_sitelib}
%else
%define use_python python
%define py_sitelib %{python_sitelib}
%endif
# FIXME: This workaround might be needed elsewhere too
%if 0%{?suse_version} > 1200 || 0%{?centos_version} >= 700 || 0%{?rhel_version} >= 700 || 0%{?rocky_version} >= 800 || 0%{?almalinux_version} >= 800
%define needdisable 1
%endif
Name: bms-network-setup
Version: 1.11
Release: 1
Summary: OTC Bare Metal Network Device Configuration Scripts
Group: Development/Tools
License: CC-BY-SA-3.0
URL: https://github.com/bms-network/bms-network-config
Source: %{name}-%{version}.tar.bz2
Patch1: bms-before-nm.diff
Patch2: bms-no-ifcfg-lan.diff
Patch3: bms-multi-user.diff
Autoreqprov: on
%if 0%{?suse_version} >= 1210
BuildRequires: systemd-rpm-macros
%endif
%if %{nosystemd} != 1
BuildRequires: systemd
%endif
%if 0%{?suse_version} >= 1000 && 0%{?suse_version} < 1200
PreReq: %insserv_prereq
%endif
%if 0%{?suse_version} >= 1000
PreReq: sysconfig
%endif
Requires: %{use_python}
Requires: %{use_python}-six
Requires: cloud-init
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%define instpath /opt/otc/bms-setup
%description
Simple creation of ifcfg from ConfigDrive DataSource
This is a much simpler version of Huawei's bms-network-config, which can do a
lot more. This script is simple and does nothing more than writing out ifcfg-*
files from the network_data.json configuration. It is designed to coexist with
cloud-init.
%prep
%setup
%global _default_patch_fuzz 2
%if 0%{?centos_version} >= 700 || 0%{?rhel_version} >= 700 || 0%{?rocky_version} >= 800 || 0%{?almalinux_version} >= 800
sed -i 's/WantedBy=cloud-init.target/WantedBy=cloud-config.target/' bms-network-setup.service
%patch1 -p1
%patch2 -p1
%else
%patch3 -p1
%endif
sed -i 's/env python$/env %{use_python}/' bms-network-setup.py
echo "nosystemd %{nosystemd} needdisable %{needdisable}"
%build
%install
#cd %{name}-%{version}
mkdir -p %{buildroot}/%{instpath}
mkdir -p %{buildroot}/%{_initddir}
mkdir -p %{buildroot}/%{_sbindir}
install -m 0755 bms-network-setup.py %{buildroot}/%{instpath}/
install -m 0755 bms-setup.sh %{buildroot}/%{instpath}/
install -m 0755 bms-disable-cloudinit-network %{buildroot}/%{instpath}/
%if %{nosystemd} == 1
cp -p bms-network-setup %{buildroot}%{_initddir}/
%if 0%{?suse_version} >= 1000
ln -sf "%{_initddir}/bms-network-setup" "%{buildroot}/%{_sbindir}/rcbms-network-setup"
%endif
%else
# Systemd
mkdir -p %{buildroot}%{_unitdir}
install -m 0644 bms-network-setup.service %{buildroot}%{_unitdir}/
%endif
# FIXME: This workaround might be needed elsewhere too
%if 0%{?needdisable} == 1
mkdir -p %{buildroot}/etc/cloud/cloud.cfg.d/
touch %{buildroot}/etc/cloud/cloud.cfg.d/91_bms_netdisable.cfg
touch %{buildroot}/etc/cloud/cloud.cfg.d/92_bms_configdrivedisable.cfg
%endif
touch %{buildroot}/etc/is_bms
%clean
rm -rf %{buildroot}
#%pre
#
%post
%if 0%{?suse_version} >= 1000 && 0%{?suse_version} < 1200
sed -i '/# Should-Start:/s@$@ bms-network-setup@' /etc/init.d/network
%{fillup_and_insserv -f -y bms-network-setup}
%else
if [ $1 -eq 1 ] ; then
%if %{nosystemd} == 1
chkconfig -a bms-network-setup
chkconfig bms-network-setup on
%else
##%if 0%{?centos_version} >= 700
##if [[ "$(cat /etc/os-release | grep -i ^NAME= | sed 's/NAME="//' | sed 's/"$//')" == "EulerOS" ]]; then
## sed -i 's/Before=cloud-init-local.service network-pre.target NetworkManager.service/Before=cloud-init.service NetworkManager.service/' /usr/lib/systemd/system/bms-network-setup.service
## sed -i 's/After=local-fs.target/After=network.service/' /usr/lib/systemd/system/bms-network-setup.service
##fi
##%endif
systemctl enable bms-network-setup.service > /dev/null 2>&1 || :
%endif
fi
%endif
%preun
%if 0%{?suse_version} >= 1000 && 0%{?suse_version} < 1200
sed -i '/# Should-Start:/s@ bms-network-setup$@@' /etc/init.d/network
%stop_on_removal bms-network-setup
%else
if [ $1 -eq 0 ] ; then
%if %{nosystemd} == 1
service bms-network-setup stop
chkconfig --del bms-network-config
%else
systemctl --no-reload disable bms-network-setup.service > /dev/null 2>&1 || :
systemctl stop bms-network-setup.service > /dev/null 2>&1 || :
rm -f /usr/lib/systemd/system/bms-network-setup.service
rm -f /etc/cloud/cloud.cfg.d/91_bms_netdisable.cfg
rm -f /etc/cloud/cloud.cfg.d/92_bms_configdrivedisable.cfg
%endif
fi
%endif
%postun
%if 0%{?suse_version} >= 1000 && 0%{?suse_version} < 1200
%restart_on_update bms-network-setup
%insserv_cleanup
%else
%if %{nosystemd} != 1
systemctl daemon-reload >/dev/null 2>&1 || :
%endif
%endif
%files
%defattr(-,root,root)
%dir %instpath
%dir /opt/otc
%instpath/*
%if %{nosystemd} == 1
%attr(0755, root, root) %{_initddir}/bms-network-setup
%if 0%{?suse_version} >= 1000
%{_sbindir}/rcbms-network-setup
%endif
%else
%attr(0644, root, root) %{_unitdir}/bms-network-setup.service
%endif
%if 0%{?needdisable} == 1
%ghost %config /etc/cloud/cloud.cfg.d/91_bms_netdisable.cfg
%ghost %config /etc/cloud/cloud.cfg.d/92_bms_configdrivedisable.cfg
%dir /etc/cloud
%dir /etc/cloud/cloud.cfg.d
%endif
%ghost /etc/is_bms
%changelog
* Mon May 22 2017 huawei
- Init