# # spec file for package libstoragemgmt # # Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %bcond_without test %define libname %{name}1 Name: libstoragemgmt Version: 1.2.3 Release: 0 Summary: Storage array management library License: LGPL-2.1+ Group: System Environment/Libraries Url: https://github.com/libstorage/libstoragemgmt Source0: https://github.com/libstorage/libstoragemgmt/releases/download/%{version}/%{name}-%{version}.tar.gz BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: libconfig-devel BuildRequires: pkg-config BuildRequires: python-M2Crypto BuildRequires: python-argparse BuildRequires: python-devel BuildRequires: python-pywbem BuildRequires: pkgconfig(bash-completion) >= 2.0 BuildRequires: pkgconfig(check) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(json-c) BuildRequires: pkgconfig(libmicrohttpd) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(udev) Requires: python-%{name} %if 0%{?suse_version} <= 1320 # For SLE12 and openSUSE 13.2 BuildRequires: libyajl-devel %else BuildRequires: pkgconfig(yajl) %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %systemd_requires %py_requires %description The libStorageMgmt library will provide a vendor agnostic open source storage application programming interface (API) that will allow management of storage arrays. The library includes a command line interface for interactive use and scripting (command lsmcli). The library also has a daemon that is used for executing plug-ins in a separate process (lsmd). %package -n %{libname} Summary: Storage array management library Group: System Environment/Libraries %description -n %{libname} The libStorageMgmt library will provide a vendor agnostic open source storage application programming interface (API) that will allow management of storage arrays. The library includes a command line interface for interactive use and scripting (command lsmcli). The library also has a daemon that is used for executing plug-ins in a separate process (lsmd). %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{libname} = %{version} %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %package -n python-%{name} Summary: Python client libraries and plug-in support for %{name} Group: System Environment/Libraries Requires: %{name} = %{version} Requires: python-argparse BuildArch: noarch %py_requires %description -n python-%{name} The %{name}-python package contains python client libraries as well as python framework support and open source plug-ins written in python. %package smis-plugin Summary: Files for SMI-S generic array support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} Requires: python-pywbem BuildArch: noarch %py_requires %description smis-plugin The %{name}-smis-plugin package contains plug-in for generic SMI-S array support. %package netapp-plugin Summary: Files for NetApp array support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} Requires: python-M2Crypto BuildArch: noarch %py_requires %description netapp-plugin The %{name}-netapp-plugin package contains plug-in for NetApp array support. %package targetd-plugin Summary: Files for targetd array support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} BuildArch: noarch %py_requires %description targetd-plugin The %{name}-targetd-plugin package contains plug-in for targetd array support. %package nstor-plugin Summary: Files for NexentaStor array support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} BuildArch: noarch %py_requires %description nstor-plugin The %{name}-nstor-plugin package contains plug-in for NexentaStor array support. %package rest Summary: REST API daemon for %{name} Group: System Environment/Daemons Requires: %{name} = %{version} %systemd_requires %description rest The experimental %{name}-rest package contains the http daemon for %{name} rest API. %package udev Summary: Udev files for %{name} Group: System Environment/Base %description udev The %{name}-udev package contains udev rules and helper utilities for uevents generated by the kernel. %package megaraid-plugin Summary: Files for LSI MegaRAID support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} BuildArch: noarch %description megaraid-plugin The %{name}-megaraid-plugin package contains the plugin for LSI MegaRAID storage management via storcli. %package hpsa-plugin Summary: Files for HP SmartArray support for %{name} Group: System Environment/Libraries Requires(post): %{name} = %{version} Requires(postun): %{name} = %{version} BuildArch: noarch %description hpsa-plugin The %{name}-hpsa-plugin package contains the plugin for HP SmartArray storage management via hpssacli. %prep %setup -q %build %configure \ --disable-static make %{?_smp_mflags} V=1 %install make DESTDIR=%{buildroot} install %{?_smp_mflags} find %{buildroot} -type f -name "*.la" -delete -print install -d -m755 %{buildroot}/%{_unitdir} install -d -m755 %{buildroot}/%{_sbindir} install -m 0644 packaging/daemon/libstoragemgmt.service \ %{buildroot}/%{_unitdir}/libstoragemgmt.service ln -sv %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} install -m 0644 packaging/daemon/libstoragemgmt-rest.service \ %{buildroot}/%{_unitdir}/libstoragemgmt-rest.service ln -sv %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}-rest #tempfiles.d configuration for /var/run mkdir -p %{buildroot}/%{_tmpfilesdir} install -m 0644 packaging/daemon/lsm-tmpfiles.conf \ %{buildroot}/%{_tmpfilesdir}/%{name}.conf #Files for udev handling install -d %{buildroot}/%{_udevrulesdir} install -m 644 tools/udev/90-scsi-ua.rules \ %{buildroot}/%{_udevrulesdir}/90-scsi-ua.rules install -m 755 tools/udev/scan-scsi-target \ %{buildroot}/%{_libexecdir}/udev/scan-scsi-target # find all duplicates %fdupes -s %{buildroot} %if %{with test} %check make check %endif %pre if [ $1 -eq 1 ]; then # New install getent group %{name} >/dev/null || groupadd -r %{name} getent passwd %{name} >/dev/null || \ useradd -r -g %{name} -d %{_localstatedir}/run/lsm -s /sbin/nologin \ -c "daemon account for libstoragemgmt" %{name} fi %service_add_pre %{name}.service %post -n %{libname} -p /sbin/ldconfig %postun -n %{libname} -p /sbin/ldconfig %post %service_add_post %{name}.service # Create tmp socket file on package new install. if [ $1 -eq 1 ]; then %if 0%{?suse_version} <= 1320 systemd-tmpfiles --create %{_tmpfilesdir}/%{name}.conf >/dev/null 2>&1 || : %else %tmpfiles_create %{_tmpfilesdir}/%{name}.conf %endif fi %preun %service_del_preun %{name}.service %postun %service_del_postun %{name}.service %pre rest %service_add_pre %{name}-rest.service %post rest %service_add_post %{name}-rest.service %preun rest %service_del_preun %{name}-rest.service %postun rest %service_del_postun %{name}-rest.service %post smis-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun smis-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi # Need to restart lsmd if plugin is new installed or removed. %post netapp-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun netapp-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi # Need to restart lsmd if plugin is new installed or removed. %post targetd-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun targetd-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi # Need to restart lsmd if plugin is new installed or removed. %post nstor-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun nstor-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi # Need to restart lsmd if plugin is new installed or removed. %post megaraid-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun megaraid-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi # Need to restart lsmd if plugin is new installed or removed. %post hpsa-plugin if [ $1 -eq 1 ]; then # New install. /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %postun hpsa-plugin if [ $1 -eq 0 ]; then # Remove /usr/bin/systemctl try-restart ${name}.service >/dev/null 2>&1 || : fi %post udev %udev_rules_update %files %defattr(-,root,root,-) %{_mandir}/man1/lsmcli.1%{ext_man} %{_mandir}/man1/lsmd.1%{ext_man} %{_mandir}/man5/lsmd.conf.5* %{_bindir}/lsmcli %{_datadir}/bash-completion/completions/lsmcli %{_bindir}/lsmd %{_bindir}/simc_lsmplugin %{_mandir}/man1/simc_lsmplugin.1%{ext_man} %{_unitdir}/libstoragemgmt.service %{_tmpfilesdir}/%{name}.conf %dir %{_sysconfdir}/lsm %config(noreplace) %{_sysconfdir}/lsm/lsmd.conf %dir %{_sysconfdir}/lsm/pluginconf.d %{_sbindir}/rclibstoragemgmt %ghost %dir /run/lsm %ghost /run/lsm/ipc %files udev %defattr(-,root,root,-) %{_libexecdir}/udev/scan-scsi-target %{_udevrulesdir}/90-scsi-ua.rules %files -n %{libname} %defattr(-,root,root,-) %doc README COPYING.LIB %{_libdir}/libstoragemgmt.so.* %files devel %defattr(-,root,root,-) %{_includedir}/* %{_libdir}/libstoragemgmt.so %{_libdir}/pkgconfig/libstoragemgmt.pc %files -n python-%{name} %defattr(-,root,root,-) %dir %{python_sitelib}/lsm %{python_sitelib}/lsm/external %{python_sitelib}/lsm/_*.* %{python_sitelib}/lsm/version.* %dir %{python_sitelib}/lsm/plugin %{python_sitelib}/lsm/plugin/__init__.* %dir %{python_sitelib}/lsm/plugin/sim %{python_sitelib}/lsm/plugin/sim %{python_sitelib}/lsm/lsmcli %{_bindir}/sim_lsmplugin %config(noreplace) %{_sysconfdir}/lsm/pluginconf.d/sim.conf %{_mandir}/man1/sim_lsmplugin.1%{ext_man} %files smis-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/smispy %{python_sitelib}/lsm/plugin/smispy %{_bindir}/smispy_lsmplugin %{_mandir}/man1/smispy_lsmplugin.1%{ext_man} %files netapp-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/ontap %{python_sitelib}/lsm/plugin/ontap %{_bindir}/ontap_lsmplugin %{_mandir}/man1/ontap_lsmplugin.1%{ext_man} %files targetd-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/targetd %{python_sitelib}/lsm/plugin/targetd %{_bindir}/targetd_lsmplugin %{_mandir}/man1/targetd_lsmplugin.1%{ext_man} %files nstor-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/nstor %{python_sitelib}/lsm/plugin/nstor %{_bindir}/nstor_lsmplugin %{_mandir}/man1/nstor_lsmplugin.1%{ext_man} %files megaraid-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/megaraid %{python_sitelib}/lsm/plugin/megaraid/__init__.* %{python_sitelib}/lsm/plugin/megaraid/megaraid.* %{python_sitelib}/lsm/plugin/megaraid/utils.* %{_bindir}/megaraid_lsmplugin %config(noreplace) %{_sysconfdir}/lsm/pluginconf.d/megaraid.conf %{_mandir}/man1/megaraid_lsmplugin.1%{ext_man} %files hpsa-plugin %defattr(-,root,root,-) %dir %{python_sitelib}/lsm/plugin/hpsa %{python_sitelib}/lsm/plugin/hpsa/__init__.* %{python_sitelib}/lsm/plugin/hpsa/hpsa.* %{python_sitelib}/lsm/plugin/hpsa/utils.* %{_bindir}/hpsa_lsmplugin %config(noreplace) %{_sysconfdir}/lsm/pluginconf.d/hpsa.conf %{_mandir}/man1/hpsa_lsmplugin.1%{ext_man} %files rest %defattr(-,root,root,-) %{_bindir}/lsm_restd %{_unitdir}/%{name}-rest.service %{_sbindir}/rclibstoragemgmt-rest %changelog