added tools dir and node-image-tools
[ovirt-node/TEMP.git] / ovirt-node.spec.in
blobadc8f83de82166a32b8a8482e2af2eb011863fc5
1 %define product_family oVirt Node
2 %define beta Beta
3 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
6 Summary: The oVirt Node daemons/scripts
7 Name: ovirt-node
8 Version: @VERSION@
9 Release: 0%{?dist}%{?extra_release}
10 Source0: %{name}-%{version}.tar.gz
11 License: GPLv2+
12 Group: Applications/System
14 %define selinux_variants mls strict targeted minimum
15 %define selinux_policyver %(sed -n 's,.*selinux-policy-\([^/]*\)/.*,\1,p' /usr/share/selinux/devel/policyhelp)
16 %define modulename %{name}-selinux
17 Source1: %{modulename}.te
18 Source2: %{modulename}.fc
20 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
21 URL: http://www.ovirt.org/
22 Requires(post): /sbin/chkconfig
23 Requires(preun): /sbin/chkconfig
24 BuildRequires: libvirt-devel >= 0.5.1
25 BuildRequires: dbus-devel hal-devel
26 BuildRequires: python-devel
27 BuildRequires: python-setuptools
28 Requires: libvirt >= 0.6.3
29 Requires: augeas >= 0.3.5
30 Requires: libvirt-qpid >= 0.2.14-3
31 Requires: hal
32 Requires: collectd-virt
33 Requires: wget
34 Requires: cyrus-sasl-gssapi cyrus-sasl cyrus-sasl-lib
35 Requires: iscsi-initiator-utils
36 Requires: ntp
37 Requires: nfs-utils
38 Requires: glusterfs-client >= 2.0.1
39 Requires: krb5-workstation
40 Requires: bash
41 Requires: chkconfig
42 Requires: bind-utils
43 # Stupid yum dep solver pulls in older 'qemu' to resolve
44 # /usr/bin/qemu-img dep. This forces it to pick the new
45 # qemu-img RPM.
46 Requires: qemu-img
47 Requires: nc
48 Requires: grub
49 Requires: /usr/sbin/crond
50 Requires: anyterm
51 Requires: newt-python
52 Requires: libuser-python
53 Requires: dbus-python
54 Requires: python-IPy
56 ExclusiveArch: %{ix86} x86_64
58 %define app_root %{_datadir}/%{name}
60 %description
61 Provides a series of daemons and support utilities to allow an
62 oVirt Node to interact with the oVirt Server.
64 %package stateless
65 Summary: oVirt Node for running as embedded hypervisor
66 Group: Applications/System
67 Requires: %{name} = %{version}-%{release}
68 Conflicts: %{name}-stateful
69 ExclusiveArch: %{ix86} x86_64
71 %description stateless
72 Provides the oVirt Node functionality needed as part of the
73 ovirt-node-image creation. This provides a stateless oVirt Node
74 that runs as a livecd.
76 %package stateful
77 Summary: oVirt Node for running on Fedora Hosts
78 Group: Applications/System
79 Requires: %{name} = %{version}-%{release}
80 Conflicts: %{name}-stateless
81 ExclusiveArch: %{ix86} x86_64
83 %description stateful
84 Provides the oVirt Node functionality needed to convert an existing
85 host into a Node in a stateful manner. Presently intended for use on
86 the host running the oVirt Appliance.
88 %package logos
89 Summary: oVirt Node Logos
90 Group: System Environment/Base
91 BuildArch: noarch
92 Obsoletes: redhat-logos
93 Provides: redhat-logos = 10.0.1-1
94 Provides: system-logos = 10.0.1-1
95 Conflicts: fedora-logos
96 Conflicts: generic-logos
97 Conflicts: fedora-logos
98 Conflicts: anaconda-images <= 10
99 Conflicts: redhat-artwork <= 5.0.5
101 %description logos
102 The ovirt-logos package contains various image files which can be
103 used by the bootloader, anaconda, and other related tools.
105 %package release
106 Summary: %{product_family} release file
107 Group: System Environment/Base
108 Obsoletes: redhat-release
109 Provides: redhat-release
110 %description release
111 %{product_family} release files.
113 %package selinux
114 Summary: SELinux policy module supporting ovirt-node
115 Group: System Environment/Base
116 BuildRequires: checkpolicy, selinux-policy-devel, hardlink
117 %if "%{selinux_policyver}" != ""
118 Requires: selinux-policy >= %{selinux_policyver}
119 %endif
120 Requires: %{name} = %{version}-%{release}
121 Requires(post): /usr/sbin/semodule, /sbin/restorecon
122 Requires(postun): /usr/sbin/semodule, /sbin/restorecon
124 %description selinux
125 SELinux policy module supporting ovirt-node
127 %prep
128 %setup -q
130 mkdir SELinux
131 cp -p %{SOURCE1} %{SOURCE2} SELinux
133 %build
134 %configure
135 make
137 cd SELinux
138 for selinuxvariant in %{selinux_variants}; do
139 make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile
140 mv %{modulename}.pp %{modulename}.pp.${selinuxvariant}
141 make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean
142 done
143 cd -
145 %install
146 %{__rm} -rf %{buildroot}
147 # FIXME move installs into makefile
148 %{__install} -d -m0755 %{buildroot}%{_sbindir}
149 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}
150 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/chkconfig.d
151 %{__install} -d -m0755 %{buildroot}%{_initrddir}
152 %{__install} -d -m0755 %{buildroot}%{app_root}
153 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/cron.d
154 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/cron.hourly
155 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/logrotate.d
156 %{__install} -d -m0755 %{buildroot}%{python_sitelib}/nodeadmin
158 %{__install} -p -m0755 scripts/ovirt-awake %{buildroot}%{_sbindir}
159 %{__install} -p -m0755 scripts/ovirt-config-boot %{buildroot}%{_sbindir}
160 %{__install} -p -m0755 scripts/ovirt-config-boot-wrapper %{buildroot}%{_sbindir}
161 %{__install} -p -m0755 scripts/ovirt-config-collectd %{buildroot}%{_sbindir}
162 %{__install} -p -m0755 scripts/ovirt-config-hostname %{buildroot}%{_sbindir}
163 %{__install} -p -m0755 scripts/ovirt-config-iscsi %{buildroot}%{_sbindir}
164 %{__install} -p -m0755 scripts/ovirt-config-logging %{buildroot}%{_sbindir}
165 %{__install} -p -m0755 scripts/ovirt-config-networking %{buildroot}%{_sbindir}
166 %{__install} -p -m0755 scripts/ovirt-config-password %{buildroot}%{_sbindir}
167 %{__install} -p -m0755 scripts/ovirt-config-setup %{buildroot}%{_sbindir}
168 %{__install} -p -m0755 scripts/ovirt-config-storage %{buildroot}%{_sbindir}
169 %{__install} -p -m0755 scripts/ovirt-config-uninstall %{buildroot}%{_sbindir}
170 %{__install} -p -m0755 scripts/ovirt-process-config %{buildroot}%{_sbindir}
171 %{__install} -D -m0755 scripts/ovirt-install-node-stateful %{buildroot}%{_sbindir}
172 %{__install} -D -m0755 scripts/ovirt-install-node-stateless %{buildroot}%{_sbindir}
173 %{__install} -D -m0755 scripts/ovirt-uninstall-node-stateful %{buildroot}%{_sbindir}
174 %{__install} -D -m0755 scripts/ovirt-config-view-logs %{buildroot}%{_sbindir}
175 %{__install} -p -m0755 scripts/persist %{buildroot}%{_sbindir}
176 %{__install} -p -m0755 scripts/unpersist %{buildroot}%{_sbindir}
178 %{__install} -p -m0644 nodeadmin/__init__.py %{buildroot}%{python_sitelib}/nodeadmin
179 %{__install} -p -m0644 nodeadmin/configscreen.py %{buildroot}%{python_sitelib}/nodeadmin
180 %{__install} -p -m0644 nodeadmin/menuscreen.py %{buildroot}%{python_sitelib}/nodeadmin
181 %{__install} -p -m0755 nodeadmin/utils.py %{buildroot}%{python_sitelib}/nodeadmin
183 %{__install} -p -m0755 nodeadmin/nodeadmin.py %{buildroot}%{python_sitelib}/nodeadmin
184 %{__install} -p -m0644 nodeadmin/mainmenu.py %{buildroot}%{python_sitelib}/nodeadmin
186 %{__install} -p -m0644 nodeadmin/nodemenu.py %{buildroot}%{python_sitelib}/nodeadmin
187 %{__install} -p -m0755 nodeadmin/adddomain.py %{buildroot}%{python_sitelib}/nodeadmin
188 %{__install} -p -m0644 nodeadmin/domainconfig.py %{buildroot}%{python_sitelib}/nodeadmin
189 %{__install} -p -m0755 nodeadmin/listdomains.py %{buildroot}%{python_sitelib}/nodeadmin
190 %{__install} -p -m0755 nodeadmin/removedomain.py %{buildroot}%{python_sitelib}/nodeadmin
191 %{__install} -p -m0755 nodeadmin/startdomain.py %{buildroot}%{python_sitelib}/nodeadmin
192 %{__install} -p -m0755 nodeadmin/stopdomain.py %{buildroot}%{python_sitelib}/nodeadmin
194 %{__install} -p -m0644 nodeadmin/netmenu.py %{buildroot}%{python_sitelib}/nodeadmin
195 %{__install} -p -m0644 nodeadmin/networkconfig.py %{buildroot}%{python_sitelib}/nodeadmin
196 %{__install} -p -m0755 nodeadmin/definenet.py %{buildroot}%{python_sitelib}/nodeadmin
197 %{__install} -p -m0755 nodeadmin/createnetwork.py %{buildroot}%{python_sitelib}/nodeadmin
198 %{__install} -p -m0755 nodeadmin/destroynetwork.py %{buildroot}%{python_sitelib}/nodeadmin
199 %{__install} -p -m0755 nodeadmin/undefinenetwork.py %{buildroot}%{python_sitelib}/nodeadmin
201 %{__install} -p -m0755 nodeadmin/addhost.py %{buildroot}%{python_sitelib}/nodeadmin
202 %{__install} -p -m0644 nodeadmin/changehost.py %{buildroot}%{python_sitelib}/nodeadmin
203 %{__install} -p -m0755 nodeadmin/hostmenu.py %{buildroot}%{python_sitelib}/nodeadmin
204 %{__install} -p -m0755 nodeadmin/removehost.py %{buildroot}%{python_sitelib}/nodeadmin
206 %{__install} -p -m0755 nodeadmin/createuser.py %{buildroot}%{python_sitelib}/nodeadmin
208 %{__install} -p -m0644 nodeadmin/halworker.py %{buildroot}%{python_sitelib}/nodeadmin
209 %{__install} -p -m0644 nodeadmin/libvirtworker.py %{buildroot}%{python_sitelib}/nodeadmin
210 %{__install} -p -m0644 nodeadmin/userworker.py %{buildroot}%{python_sitelib}/nodeadmin
212 # gptsync
213 %{__install} -p -m0755 gptsync/gptsync %{buildroot}%{_sbindir}
214 %{__install} -p -m0755 gptsync/showpart %{buildroot}%{_sbindir}
217 %{__install} -p -m0755 scripts/ovirt-functions %{buildroot}%{_initrddir}
218 %{__install} -p -m0755 scripts/ovirt-early %{buildroot}%{_initrddir}
219 %{__install} -p -m0755 scripts/ovirt-firstboot %{buildroot}%{_initrddir}
220 %{__install} -p -m0755 scripts/ovirt %{buildroot}%{_initrddir}
221 %{__install} -p -m0755 scripts/ovirt-post %{buildroot}%{_initrddir}
223 %{__install} -p -m0644 scripts/collectd.conf.in %{buildroot}%{_sysconfdir}
225 %{__install} -p -m0755 kinit/ovirt-kinit %{buildroot}%{_sysconfdir}/cron.hourly
227 %{__install} -p -m0644 logrotate/ovirt-logrotate %{buildroot}%{_sysconfdir}/cron.d
228 %{__install} -p -m0644 logrotate/ovirt-logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d
230 # install the admin tools
231 python nodeadmin/setup.py install --root %{buildroot}
232 # rm -rf %{buildroot}%{python_sitelib}/nodeadmin-@VERSION@*
234 echo "oVirt Node release %{version}-%{release}" > %{buildroot}%{_sysconfdir}/ovirt-release
235 mkdir -p %{buildroot}/%{_sysconfdir}/default
236 touch %{buildroot}/%{_sysconfdir}/default/ovirt
238 cd SELinux
239 for selinuxvariant in %{selinux_variants}; do
240 install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant}
241 install -p -m 644 %{modulename}.pp.${selinuxvariant} \
242 %{buildroot}%{_datadir}/selinux/${selinuxvariant}/%{modulename}.pp
243 done
244 cd -
246 /usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
248 # ovirt-logos
249 # should be ifarch i386
250 mkdir -p %{buildroot}/boot/grub
251 install -p -m 644 images/grub-splash.xpm.gz %{buildroot}/boot/grub/splash.xpm.gz
252 # end i386 bits
253 mkdir -p %{buildroot}/usr/lib/anaconda-runtime
254 install -p -m 644 images/syslinux-vesa-splash.jpg %{buildroot}/usr/lib/anaconda-runtime
255 # ovirt-logos
257 # release files
258 echo "%{product_family} release %{version}%{?beta: %{beta}} (%{release})" > %{buildroot}/etc/ovirt-release
259 cp %{buildroot}/etc/ovirt-release %{buildroot}/etc/issue
260 echo "Kernel \r on an \m (\l)" >> %{buildroot}/etc/issue
261 cp %{buildroot}/etc/issue %{buildroot}/etc/issue.net
262 echo >> %{buildroot}/etc/issue
263 ln -s ovirt-release %{buildroot}/etc/redhat-release
264 ln -s ovirt-release %{buildroot}/etc/system-release
266 # ovirt-config-boot post-install hooks
267 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/ovirt-config-boot.d
269 # default ovirt-config-setup menu options
270 %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/ovirt-config-setup.d
271 %{__ln_s} ../..%{_sbindir}/ovirt-config-storage %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"00_Disk Partitioning"
272 %{__ln_s} ../..%{_sbindir}/ovirt-config-password %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"05_Administrator Password"
273 %{__ln_s} ../..%{_sbindir}/ovirt-config-hostname %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"10_Set Hostname"
274 %{__ln_s} ../..%{_sbindir}/ovirt-config-iscsi %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"12_iSCSI Initiator Setup"
275 %{__ln_s} ../..%{_sbindir}/ovirt-config-networking %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"15_Networking Setup"
276 %{__ln_s} ../..%{_sbindir}/ovirt-config-logging %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"30_Logging Setup"
277 %{__ln_s} ../..%{_sbindir}/ovirt-config-collectd %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"35_Collectd Setup"
278 %{__ln_s} ../..%{_sbindir}/ovirt-config-view-logs %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"90_View logs"
279 %{__ln_s} ../..%{_sbindir}/ovirt-config-boot-wrapper %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"98_Local install and reboot"
280 %{__ln_s} ../..%{_sbindir}/ovirt-config-uninstall %{buildroot}%{_sysconfdir}/ovirt-config-setup.d/"99_Uninstall node"
283 %clean
284 %{__rm} -rf %{buildroot}
286 %post
287 # Setup basic collectd configuration
288 sed '/<Plugin network>/,/<\/Plugin>/d' /etc/collectd.conf.in > /etc/collectd.conf
290 %post stateless
291 /sbin/chkconfig --add ovirt-early
292 /sbin/chkconfig --add ovirt-firstboot
293 /sbin/chkconfig --add ovirt
294 /sbin/chkconfig --add ovirt-post
296 %preun stateless
297 if [ "$1" = 0 ] ; then
298 /sbin/chkconfig --del ovirt-early
299 /sbin/chkconfig --del ovirt-firstboot
300 /sbin/chkconfig --del ovirt
301 /sbin/chkconfig --del ovirt-post
304 %post selinux
305 for selinuxvariant in %{selinux_variants}; do
306 /usr/sbin/semodule -s ${selinuxvariant} -i \
307 %{_datadir}/selinux/${selinuxvariant}/%{modulename}.pp &> /dev/null || :
308 done
310 %postun selinux
311 if [ $1 -eq 0 ] ; then
312 for selinuxvariant in %{selinux_variants}; do
313 /usr/sbin/semodule -s ${selinuxvariant} -r %{modulename} &> /dev/null || :
314 done
317 %files release
318 %defattr(-,root,root)
319 %attr(0644,root,root) /etc/ovirt-release
320 /etc/redhat-release
321 /etc/system-release
322 %config(noreplace) %attr(0644,root,root) /etc/issue
323 %config(noreplace) %attr(0644,root,root) /etc/issue.net
325 %files selinux
326 %defattr(-,root,root,0755)
327 %doc SELinux/*
328 %{_datadir}/selinux/*/%{modulename}.pp
330 %files logos
331 %defattr(-, root, root)
332 %doc COPYING
333 # should be ifarch i386
334 /boot/grub/splash.xpm.gz
335 # end i386 bits
336 /usr/lib/anaconda-runtime/*.jpg
338 %files stateless
339 %defattr(-,root,root,0755)
340 %{_sbindir}/ovirt-awake
341 %{_sbindir}/ovirt-config-boot
342 %{_sbindir}/ovirt-config-boot-wrapper
343 %{_sbindir}/ovirt-config-collectd
344 %{_sbindir}/ovirt-config-iscsi
345 %{_sbindir}/ovirt-config-hostname
346 %{_sbindir}/ovirt-config-logging
347 %{_sbindir}/ovirt-config-networking
348 %{_sbindir}/ovirt-config-password
349 %{_sbindir}/ovirt-config-setup
350 %{_sbindir}/ovirt-config-storage
351 %{_sbindir}/ovirt-config-uninstall
352 %{_sbindir}/ovirt-config-view-logs
353 %{_sbindir}/ovirt-process-config
354 %{_sbindir}/ovirt-install-node-stateless
355 %{_sbindir}/gptsync
356 %{_sbindir}/showpart
357 %{_sbindir}/persist
358 %{_sbindir}/unpersist
359 %{_initrddir}/ovirt-early
360 %{_initrddir}/ovirt-firstboot
361 %{_initrddir}/ovirt
362 %{_initrddir}/ovirt-post
363 %config %{_sysconfdir}/cron.hourly/ovirt-kinit
364 %config %{_sysconfdir}/logrotate.d/ovirt-logrotate.conf
365 %config %{_sysconfdir}/cron.d/ovirt-logrotate
366 %{_sysconfdir}/ovirt-config-boot.d
367 %{_sysconfdir}/ovirt-config-setup.d
369 %files stateful
370 %defattr(-,root,root,0755)
371 %{_sbindir}/ovirt-install-node-stateful
372 %{_sbindir}/ovirt-uninstall-node-stateful
374 %files
375 %defattr(-,root,root,0755)
376 %{_sbindir}/ovirt-awake
377 %{_initrddir}/ovirt-functions
378 %defattr(-,root,root,0644)
379 %{_bindir}/nodeadmin
380 %{_bindir}/addpool
381 %{_bindir}/addvm
382 %{_bindir}/addvolume
383 %{_bindir}/startvm
384 %{_bindir}/stopvm
385 %{_bindir}/rmvm
386 %{_bindir}/listpools
387 %{_bindir}/listvms
388 %{_bindir}/rmpool
389 %{_bindir}/rmvolume
390 %{_bindir}/startpool
391 %{_bindir}/stoppool
392 %{_bindir}/definenet
393 %{_bindir}/createnet
394 %{_bindir}/destroynet
395 %{_bindir}/undefinenet
396 %{_bindir}/listnets
397 %{_bindir}/createuser
398 %{_sysconfdir}/collectd.conf.in
399 %{python_sitelib}/nodeadmin
400 %{python_sitelib}/nodeadmin-@VERSION@-py2.6.egg-info
401 %config %attr(0644,root,root) %{_sysconfdir}/ovirt-release
402 %config %attr(0644,root,root) %{_sysconfdir}/default/ovirt
404 %changelog
405 * Thu Dec 11 2008 Perry Myers <pmyers@redhat.com> - 0.96
406 - Subpackage stateful/stateless to separate out functionality for
407 embedded Node and Node running as part of already installed OS
408 - ovirt-config-* setup scripts for standalone mode
410 * Thu Sep 11 2008 Chris Lalancette <clalance@redhat.com> - 0.92 0.7
411 - Add the ovirt-install- and ovirt-uninstall-node scripts, and refactor
412 post to accomodate
414 * Mon Sep 8 2008 Jim Meyering <meyering@redhat.com> - 0.92 0.6
415 - Update ovirt-identify-node's build rule.
417 * Fri Aug 22 2008 Chris Lalancette <clalance@redhat.com> - 0.92 0.5
418 - Add the ovirt-listen-awake daemon to the RPM
420 * Fri Aug 22 2008 Chris Lalancette <clalance@redhat.com> - 0.92 0.4
421 - Re-arrange the directory layout, in preparation for ovirt-listen-awake
423 * Tue Jul 29 2008 Perry Myers <pmyers@redhat.com> - 0.92 0.2
424 - Added /etc/ovirt-release and merged ovirt-setup into spec file
426 * Wed Jul 02 2008 Darryl Pierce <dpierce@redhat.com> - 0.92 0.2
427 - Added log rotation to limit file system writes.
429 * Mon Jun 30 2008 Perry Myers <pmyers@redhat.com> - 0.92 0.1
430 - Add in sections of kickstart post, general cleanup