]> git.pld-linux.org Git - packages/heartbeat.git/blame - heartbeat.spec
- BR: libnl-devel
[packages/heartbeat.git] / heartbeat.spec
CommitLineData
288e7c20
JK
1#
2# TODO:
3# - think how to handle /etc/ha.d/haresources file, which is v1 config file
4# and should not exist if v2 configuration is enabled ("crm yes", default is
5# "no").
6#
9b9d4954 7%include /usr/lib/rpm/macros.perl
dba30e8d 8Summary: Heartbeat - subsystem for High-Availability Linux
38bf5a19
ER
9Summary(es.UTF-8): Subsistema heartbeat para Linux "High-Availability"
10Summary(pl.UTF-8): Podsystem heartbeat dla systemów o podwyższonej niezawodności
11Summary(pt_BR.UTF-8): Implementa sistema de monitoração (heartbeats) visando Alta Disponibilidade
49245a93 12Name: heartbeat
48ddbfa1 13Version: 2.1.3
0dabf06b 14Release: 9
0149c089 15License: GPL v2+
dba30e8d 16Group: Applications/System
253e454e 17Source0: http://www.linux-ha.org/download/%{name}-%{version}.tar.gz
e8a24c40 18# Source0-md5: bca53530a3802f7677772323047405cd
80a56156 19Source1: %{name}.init
20Source2: ldirectord.init
43707702 21Patch0: %{name}-ac.patch
288e7c20 22Patch1: %{name}-no_ipmilan_test.patch
253e454e 23URL: http://www.linux-ha.org/Heartbeat
9b9d4954 24BuildRequires: OpenIPMI-devel >= 2.0.3
be5c114d
JB
25BuildRequires: autoconf
26BuildRequires: automake
80a56156 27BuildRequires: gdbm-devel
28BuildRequires: glib2-devel
e4375587 29BuildRequires: gnutls-devel
be5c114d 30BuildRequires: libltdl-devel
8c7f88c8 31BuildRequires: libnet-devel >= 1.1.0
0eec7f7b 32BuildRequires: libnl-devel
be5c114d 33BuildRequires: libtool
80a56156 34BuildRequires: libuuid-devel
35BuildRequires: libwrap-devel
5cabf613 36BuildRequires: libxml2-devel
43707702 37BuildRequires: lm_sensors-devel
ecdd12e5 38BuildRequires: ncurses-devel >= 5.4
38cf68bf 39BuildRequires: net-snmp-devel >= 5.1
e4375587 40BuildRequires: pam-devel
80a56156 41BuildRequires: pkgconfig
e4375587 42BuildRequires: python-devel
9b9d4954 43BuildRequires: rpm-perlprov
43707702 44BuildRequires: rpm-pythonprov
89b00739 45BuildRequires: rpmbuild(macros) >= 1.268
1a1643fc 46BuildRequires: swig-perl >= 1.3.25
45cd814e 47BuildRequires: swig-python >= 1.3.25
8c7f88c8
ER
48Requires(post,postun): /sbin/ldconfig
49Requires(post,preun): /sbin/chkconfig
50Requires(postun): /usr/sbin/groupdel
51Requires(postun): /usr/sbin/userdel
2dbb1cca 52Requires(pre): /bin/id
7efcd267 53Requires(pre): /usr/bin/getgid
54Requires(pre): /usr/sbin/groupadd
2dbb1cca 55Requires(pre): /usr/sbin/useradd
d503e966 56Requires: psmisc >= 22.5-2
89b00739 57Requires: rc-scripts
4eef1bae 58Requires: syslogdaemon
b52d72b7 59Requires: which
5a6adc8b 60Provides: group(haclient)
2dbb1cca 61Provides: user(hacluster)
cb667f50
JB
62# disappeared
63Obsoletes: perl-heartbeat
c8d761f0 64BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
8c7f88c8
ER
65
66%define specflags -fgnu89-inline
67%define filterout_ld -Wl,--as-needed
814ecbcd 68
8060f5e4 69%description
49245a93
MP
70heartbeat is a basic heartbeat subsystem for Linux-HA. It will run
71scripts at initialization, and when machines go up or down. This
72version will also perform IP address takeover using gratuitous ARPs.
73It works correctly for a 2-node configuration, and is extensible to
74larger configurations.
8060f5e4 75
6585451e 76It implements the following kinds of heartbeats:
49245a93
MP
77 - Bidirectional Serial Rings ("raw" serial ports)
78
48caa1d6
JR
79%description -l es.UTF-8
80heartbeat es un sistema básico para Linux-HA. La función de este
81software es ejecutar scripts en la inicialización y al apagar las
82máquinas que lo utilizan.
83
84%description -l pl.UTF-8
85heartbeat jest podstawowym podsystemem dla systemów o podwyższonej
86dostępności budowanych w oparciu o Linuksa. Zajmuje się uruchamianiem
87skryptów podczas startu i zamykania systemu. Ta wersja pakietu pozwala
88na przejmowanie adresów IP. Oprogramowanie działa poprawnie dla
89konfiguracji składającej się z 2 hostów, można je również stosować do
49245a93 90bardziej skomplikowanych konfiguracji.
814ecbcd 91
80a56156 92%package stonith
ae97f5d3 93Summary: Provides an interface to Shoot The Other Node In The Head
38bf5a19 94Summary(pl.UTF-8): Interfejs do "odstrzelenia" drugiego węzła w klastrze
ae97f5d3 95Group: Applications/System
ed0906f5 96Requires: OpenIPMI >= 2.0.3
80a56156 97
98%description stonith
ae97f5d3
JB
99Provides an interface to Shoot The Other Node In The Head.
100
48caa1d6
JR
101%description stonith -l pl.UTF-8
102STONITH (Shoot The Other Node In The Head) to interfejs służący do
103"odstrzelenia" drugiego węzła w klastrze.
80a56156 104
105%package ldirectord
2dbb1cca 106Summary: Monitor virtual services provided by LVS
38bf5a19 107Summary(pl.UTF-8): Demon monitorujący wirtualne usługi dostarczane poprzez LVS
ae97f5d3 108Group: Applications/System
aa4f0c56 109Requires(post,preun): /sbin/chkconfig
80a56156 110Requires: ipvsadm
8c7f88c8 111Requires: rc-scripts
80a56156 112
113%description ldirectord
8c7f88c8
ER
114ldirectord is a stand-alone daemon to monitor services of real for
115virtual services provided by The Linux Virtual Server
2dbb1cca 116(http://www.linuxvirtualserver.org/).
80a56156 117
48caa1d6
JR
118%description ldirectord -l pl.UTF-8
119ldirectord to samodzielny demon monitorujący rzeczywiste usługi dla
120wirtualnych usług dostarczanych poprzez Linux Virtual Server
931cb2c1
JB
121(http://www.linuxvirtualserver.org/).
122
80a56156 123%package devel
2dbb1cca 124Summary: Heartbeat developement header files and libraries
38bf5a19 125Summary(pl.UTF-8): Pliki nagłówkowe i biblioteki heartbeat
ae97f5d3
JB
126Group: Development/Libraries
127Requires: %{name} = %{version}-%{release}
80a56156 128
129%description devel
2dbb1cca 130Heartbeat developement header files and libraries.
ae97f5d3 131
48caa1d6
JR
132%description devel -l pl.UTF-8
133Pliki nagłówkowe i biblioteki heartbeat.
80a56156 134
135%package static
2dbb1cca 136Summary: Heartbeat static libraries
38bf5a19 137Summary(pl.UTF-8): Biblioteki statyczne heartbeat
ae97f5d3
JB
138Group: Development/Libraries
139Requires: %{name}-devel = %{version}-%{release}
140
80a56156 141%description static
2dbb1cca 142Heartbeat static libraries.
80a56156 143
48caa1d6 144%description static -l pl.UTF-8
2dbb1cca 145Biblioteki statyczne heartbeat.
dba30e8d 146
9b9d4954 147%package cts
148Summary: Cluster Test Suite
38bf5a19 149Summary(pl.UTF-8): Zestaw testów klastra
9b9d4954 150Group: Applications/System
151Requires: %{name} = %{version}-%{release}
152
153%description cts
154Cluster Test Suite for heartbeat.
155
48caa1d6
JR
156%description cts -l pl.UTF-8
157Zestaw testów klastra opartego o heartbeat.
9b9d4954 158
288e7c20
JK
159%package gui
160Summary: Heartbeat GUI
161Summary(pl.UTF-8): Graficzny interfejs użytkownika dla heartbeat
162Group: Applications/System
163Requires: %{name} = %{version}-%{release}
164
165%description gui
166Graphical user interface for heartbeat.
167
168%description gui -l pl.UTF-8
169Graficzny interfejs użytkownika dla heartbeat.
170
6585451e 171%prep
347cfe3d 172%setup -q
38cf68bf 173%patch0 -p1
69a12e93 174%patch1 -p1
b8ab022e 175
be5c114d
JB
176rm -rf libltdl
177
6585451e 178%build
be5c114d
JB
179%{__libtoolize} --ltdl
180%{__aclocal}
181%{__autoconf}
182%{__automake}
183%configure \
69a12e93 184 FSCK=/sbin/fsck \
f39e1b28 185 FUSER=/bin/fuser \
69a12e93 186 IPTABLES=/usr/sbin/iptables \
9b9d4954 187 MAILCMD=/bin/mail \
80a56156 188 MOUNT=/bin/mount \
69a12e93 189 PING=/bin/ping \
80a56156 190 --with-initdir=/etc/rc.d/init.d \
253e454e 191 --enable-fatal-warnings=no \
80a56156 192 --enable-crm \
e4375587
JB
193 --enable-lrm \
194 --enable-mgmt \
43707702 195 --enable-snmp-subagent
be5c114d 196
49245a93 197%{__make}
dba30e8d 198
814ecbcd 199%install
49245a93 200rm -rf $RPM_BUILD_ROOT
be5c114d
JB
201
202%{__make} install \
203 DESTDIR=$RPM_BUILD_ROOT
9b9d4954 204install -d $RPM_BUILD_ROOT/var/run/heartbeat
78882913
PG
205
206rm -f $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
207ln -sf %{_sbindir}/ldirectord $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
814ecbcd 208
84d8fd23
JB
209# plugins are lt_dlopened, but using *.so names, so *.la are not used
210rm -f $RPM_BUILD_ROOT%{_libdir}/{heartbeat,pils,stonith}/plugins/*/*.{la,a}
814ecbcd 211
80a56156 212rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
213install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
214
215> $RPM_BUILD_ROOT/etc/ha.d/haresources
216echo -e "auth 2\n2 crc" > $RPM_BUILD_ROOT/etc/ha.d/authkeys
217install doc/ha.cf $RPM_BUILD_ROOT/etc/ha.d
218
219rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
220install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
221install ldirectord/ldirectord.cf $RPM_BUILD_ROOT%{_sysconfdir}/ha.d
222
288e7c20
JK
223rm -f $RPM_BUILD_ROOT%{_datadir}/heartbeat/cts/README
224
225for tool in ha_logger hb_addnode hb_delnode hb_standby hb_takeover; do
8c7f88c8 226 ln -sf %{_libdir}/heartbeat/$tool $RPM_BUILD_ROOT%{_bindir}
288e7c20
JK
227done
228
229sed -i -e's, /%{_lib}/libpam.la, /usr/%{_lib}/libpam.la,g' $RPM_BUILD_ROOT%{_libdir}/*.la
230
45cd814e
JB
231%find_lang haclient
232
6585451e 233%clean
6585451e 234rm -rf $RPM_BUILD_ROOT
6585451e 235
7f78f119 236%pre
e64246bf 237%groupadd -g 60 haclient
80a56156 238%useradd -u 17 -d /var/lib/heartbeat/cores/hacluster -c "Heartbeat User" -g haclient hacluster
7f78f119 239
dba30e8d 240%post
84d8fd23 241/sbin/ldconfig
dba30e8d 242/sbin/chkconfig --add heartbeat
89b00739 243%service %{name} restart
6585451e 244
6585451e 245%preun
dba30e8d 246if [ "$1" = "0" ]; then
89b00739 247 %service -q %{name} stop
dba30e8d 248 /sbin/chkconfig --del heartbeat
6585451e 249fi
dba30e8d 250
7f78f119 251%postun
84d8fd23 252/sbin/ldconfig
7f78f119 253if [ "$1" = "0" ]; then
2dbb1cca 254 %userremove hacluster
5a6adc8b 255 %groupremove haclient
7f78f119 256fi
257
ae97f5d3
JB
258%post stonith -p /sbin/ldconfig
259%postun stonith -p /sbin/ldconfig
260
45cd814e 261%files -f haclient.lang
78882913 262%defattr(644,root,root,755)
48ddbfa1 263%doc doc/{*.html,AUTHORS,apphbd.cf,authkeys,ha.cf,logd.cf,haresources,startstop}
253e454e
ER
264%attr(755,root,root) %{_libdir}/libapphb.so.*.*.*
265%attr(755,root,root) %ghost %{_libdir}/libapphb.so.0
266%attr(755,root,root) %{_libdir}/libccmclient.so.*.*.*
267%attr(755,root,root) %ghost %{_libdir}/libccmclient.so.1
268%attr(755,root,root) %{_libdir}/libcib.so.*.*.*
269%attr(755,root,root) %ghost %{_libdir}/libcib.so.1
270%attr(755,root,root) %{_libdir}/libclm.so.*.*.*
271%attr(755,root,root) %ghost %{_libdir}/libclm.so.1
272%attr(755,root,root) %{_libdir}/libcrmcommon.so.*.*.*
273%attr(755,root,root) %ghost %{_libdir}/libcrmcommon.so.1
274%attr(755,root,root) %{_libdir}/libhbclient.so.*.*.*
275%attr(755,root,root) %ghost %{_libdir}/libhbclient.so.1
276%attr(755,root,root) %{_libdir}/libhbmgmt.so.*.*.*
277%attr(755,root,root) %ghost %{_libdir}/libhbmgmt.so.0
278%attr(755,root,root) %{_libdir}/libhbmgmtclient.so.*.*.*
279%attr(755,root,root) %ghost %{_libdir}/libhbmgmtclient.so.0
280%attr(755,root,root) %{_libdir}/libhbmgmtcommon.so.*.*.*
281%attr(755,root,root) %ghost %{_libdir}/libhbmgmtcommon.so.0
282%attr(755,root,root) %{_libdir}/libhbmgmttls.so.*.*.*
283%attr(755,root,root) %ghost %{_libdir}/libhbmgmttls.so.0
284%attr(755,root,root) %{_libdir}/liblrm.so.*.*.*
285%attr(755,root,root) %ghost %{_libdir}/liblrm.so.0
286%attr(755,root,root) %{_libdir}/libpe_rules.so.*.*.*
287%attr(755,root,root) %ghost %{_libdir}/libpe_rules.so.2
288%attr(755,root,root) %{_libdir}/libpe_status.so.*.*.*
289%attr(755,root,root) %ghost %{_libdir}/libpe_status.so.2
290%attr(755,root,root) %{_libdir}/libpengine.so.*.*.*
291%attr(755,root,root) %ghost %{_libdir}/libpengine.so.3
292%attr(755,root,root) %{_libdir}/libpils.so.*.*.*
293%attr(755,root,root) %ghost %{_libdir}/libpils.so.1
294%attr(755,root,root) %{_libdir}/libplumb.so.*.*.*
295%attr(755,root,root) %ghost %{_libdir}/libplumb.so.1
296%attr(755,root,root) %{_libdir}/libplumbgpl.so.*.*.*
297%attr(755,root,root) %ghost %{_libdir}/libplumbgpl.so.1
298%attr(755,root,root) %{_libdir}/librecoverymgr.so.*.*.*
299%attr(755,root,root) %ghost %{_libdir}/librecoverymgr.so.1
300%attr(755,root,root) %{_libdir}/libstonith.so.*.*.*
301%attr(755,root,root) %ghost %{_libdir}/libstonith.so.1
302%attr(755,root,root) %{_libdir}/libstonithd.so.*.*.*
303%attr(755,root,root) %ghost %{_libdir}/libstonithd.so.0
304%attr(755,root,root) %{_libdir}/libtransitioner.so.*.*.*
305%attr(755,root,root) %ghost %{_libdir}/libtransitioner.so.1
84d8fd23 306%dir %{_libdir}/heartbeat
84d8fd23
JB
307%dir %{_libdir}/heartbeat/plugins
308%dir %{_libdir}/heartbeat/plugins/*
309%attr(755,root,root) %{_libdir}/heartbeat/plugins/*/*.so
931cb2c1
JB
310%attr(755,root,root) %{_libdir}/heartbeat/[!cp]*
311%attr(755,root,root) %{_libdir}/heartbeat/c[!t]*
38cf68bf 312%attr(755,root,root) %{_libdir}/heartbeat/p[!l]*
84d8fd23
JB
313%dir %{_libdir}/pils
314%dir %{_libdir}/pils/plugins
315%dir %{_libdir}/pils/plugins/*
288e7c20
JK
316%dir %{_datadir}/heartbeat
317%attr(755,root,root) %{_datadir}/heartbeat/BasicSanityCheck
318%attr(755,root,root) %{_datadir}/heartbeat/ResourceManager
319%attr(755,root,root) %{_datadir}/heartbeat/SNMPAgentSanityCheck
320%attr(755,root,root) %{_datadir}/heartbeat/TestHeartbeatComm
321%attr(755,root,root) %{_datadir}/heartbeat/ha_*
322%attr(755,root,root) %{_datadir}/heartbeat/hb_*
323%attr(755,root,root) %{_datadir}/heartbeat/lrmtest
324%attr(755,root,root) %{_datadir}/heartbeat/mach_down
325%attr(755,root,root) %{_datadir}/heartbeat/req_resource
48ddbfa1 326%attr(755,root,root) %{_datadir}/heartbeat/utillib.sh
288e7c20 327%{_datadir}/heartbeat/crm.dtd
84d8fd23 328%attr(755,root,root) %{_libdir}/pils/plugins/*/*.so
84d8fd23 329%dir %{_sysconfdir}/ha.d
84d8fd23
JB
330%attr(755,root,root) %{_sysconfdir}/ha.d/rc.d
331%attr(755,root,root) %{_sysconfdir}/ha.d/resource.d
288e7c20 332%exclude %{_sysconfdir}/ha.d/resource.d/ldirectord
84d8fd23
JB
333%{_sysconfdir}/ha.d/README.config
334%attr(755,root,root) %{_sysconfdir}/ha.d/harc
335%{_sysconfdir}/ha.d/shellfuncs
45cd814e 336%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/hbmgmtd
80a56156 337%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/heartbeat
84d8fd23 338%attr(754,root,root) /etc/rc.d/init.d/heartbeat
ecdd12e5 339%attr(755,root,root) %{_prefix}/lib/ocf
9b9d4954 340%dir /var/run/heartbeat
288e7c20
JK
341%attr(750,hacluster,haclient) %dir /var/run/heartbeat/ccm
342%attr(750,hacluster,haclient) %dir /var/run/heartbeat/crm
343%dir /var/lib/heartbeat
344%attr(770,root,haclient) %dir /var/lib/heartbeat/lrm
345%attr(770,root,haclient) %dir /var/lib/heartbeat/mgmt
346%attr(750,hacluster,haclient) %dir /var/lib/heartbeat/pengine
347%attr(750,hacluster,haclient) %dir /var/lib/heartbeat/crm
348%attr(750,root,haclient) %dir /var/lib/heartbeat/fencing
349%attr(711,root,root) %dir /var/lib/heartbeat/cores
350%attr(700,root,root) %dir /var/lib/heartbeat/cores/root
351# we don't want any files owned by nobody
352%attr(700,root,root) %dir /var/lib/heartbeat/cores/nobody
353%attr(700,hacluster,root) %dir /var/lib/heartbeat/cores/hacluster
80a56156 354%{_mandir}/man1/*.1*
2dbb1cca 355%{_mandir}/man8/[a-h]*.8*
d2309f7c
JB
356%attr(755,root,root) %{_bindir}/cl_respawn
357%attr(2755,root,haclient) %{_bindir}/cl_status
288e7c20
JK
358%attr(755,root,root) %{_bindir}/ha_logger
359%attr(755,root,root) %{_bindir}/hb_addnode
360%attr(755,root,root) %{_bindir}/hb_delnode
361%attr(755,root,root) %{_bindir}/hb_standby
362%attr(755,root,root) %{_bindir}/hb_takeover
89b00739 363%attr(755,root,root) %{_sbindir}/[a-i]*
288e7c20 364%attr(755,root,root) %{_sbindir}/ptest
ecdd12e5 365%attr(755,root,root) %{_sbindir}/ocf-tester
80a56156 366%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/haresources
367%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/authkeys
2dbb1cca 368%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ha.cf
369%{_datadir}/snmp/mibs/*mib
80a56156 370
371%files stonith
372%defattr(644,root,root,755)
373%dir %{_libdir}/stonith
374%dir %{_libdir}/stonith/plugins
375%dir %{_libdir}/stonith/plugins/external
376%dir %{_libdir}/stonith/plugins/stonith2
2dbb1cca 377%attr(755,root,root) %{_libdir}/stonith/plugins/*/*
80a56156 378%attr(755,root,root) %{_sbindir}/meatclient
379%attr(755,root,root) %{_sbindir}/stonith
288e7c20
JK
380%dir %{_datadir}/heartbeat/stonithdtest
381%attr(755,root,root) %{_datadir}/heartbeat/stonithdtest/STONITHDBasicSanityCheck
931cb2c1
JB
382%{_mandir}/man8/stonith.8*
383%{_mandir}/man8/meatclient.8*
80a56156 384
385%files ldirectord
386%defattr(644,root,root,755)
80a56156 387%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ldirectord.cf
388%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/ldirectord
288e7c20 389%attr(755,root,root) %{_sysconfdir}/ha.d/resource.d/ldirectord
80a56156 390%attr(754,root,root) /etc/rc.d/init.d/ldirectord
391%attr(755,root,root) %{_sbindir}/*ldirectord*
ae97f5d3 392%{_mandir}/man8/*ldirectord*.8*
80a56156 393
394%files devel
395%defattr(644,root,root,755)
ae97f5d3 396%{_includedir}/*
253e454e 397%attr(755,root,root) %{_libdir}/lib*.so
80a56156 398%{_libdir}/*.la
931cb2c1 399
38cf68bf
JB
400%files static
401%defattr(644,root,root,755)
402%{_libdir}/*.a
403
9b9d4954 404%files cts
405%defattr(644,root,root,755)
406%doc cts/README
288e7c20
JK
407%dir %{_datadir}/heartbeat/cts
408%attr(755,root,root) %{_datadir}/heartbeat/cts/*.py
409%{_datadir}/heartbeat/cts/*.py[co]
410%attr(755,root,root) %{_datadir}/heartbeat/cts/*.sh
411%attr(755,root,root) %{_datadir}/heartbeat/cts/*Dummy
412
413%files gui
414%defattr(644,root,root,755)
415%attr(755,root,root) %{_bindir}/hb_gui
416%dir %{_libdir}/heartbeat-gui
417%attr(755,root,root) %{_libdir}/heartbeat-gui/*.so.*
f8bbe2c5 418%attr(755,root,root) %{_libdir}/heartbeat-gui/_pymgmt.so
288e7c20
JK
419%{_libdir}/heartbeat-gui/*.a
420%{_libdir}/heartbeat-gui/*.la
421%attr(755,root,root) %{_libdir}/heartbeat-gui/*.py
422%dir %{_datadir}/heartbeat-gui
423%{_datadir}/heartbeat-gui/*.png
424%attr(755,root,root) %{_datadir}/heartbeat-gui/*.py
425%{_datadir}/heartbeat-gui/haclient.glade
This page took 0.617914 seconds and 4 git commands to generate.