rha 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/rha/ha_cf.rb ADDED
@@ -0,0 +1,762 @@
1
+ # = rha - A Heartbeat gem for Ruby
2
+ #
3
+ # Homepage:: http://github.com/jjuliano/rha
4
+ # Author:: Joel Bryan Juliano
5
+ # Copyright:: (cc) 2011 Joel Bryan Juliano
6
+ # License:: MIT
7
+
8
+ #
9
+ # class RhaConfig.new( array, str, array)
10
+ #
11
+
12
+ #
13
+ # RhaConfig are configurations for heartbeat.
14
+ #
15
+ class RhaConfig
16
+ #
17
+ # The use_logd directive specifies whether Heartbeat logs its
18
+ # messages through logging daemon or not.
19
+ #
20
+ # If the logging daemon is used, all log messages will be sent
21
+ # through IPC to the logging daemon, which then writes them into
22
+ # log files. In case the logging daemon dies (for whatever reason),
23
+ # a warning message will be logged and all messages will be written
24
+ # to log files directly.
25
+ #
26
+ # If the logging daemon is used, logfile/debugfile/logfacility in this
27
+ # file are not meaningful any longer. You should check the config file
28
+ # for logging daemon (the default is /etc/logd.cf).
29
+ #
30
+ # If use_logd is not used, all log messages will be written to log files directly.
31
+ #
32
+ # The logging daemon is started/stopped in heartbeat script.
33
+ #
34
+ # Setting use_logd to "on" is recommended.
35
+ #
36
+ attr_accessor :use_logd
37
+
38
+ #
39
+ # The udpport directive specifies which port Heartbeat will use for its
40
+ # UDP intra-cluster communication. There are two common reasons for overriding
41
+ # this value: there are multiple bcast clusters on the same subnet, or this port
42
+ # is already in use in accordance with some locally-established policy.
43
+ #
44
+ # The default value for this parameter is the the port ha-cluster in /etc/services
45
+ # (if present), or 694 if port ha-cluster is not in /etc/services. 694 is the
46
+ # IANA registered port number for Heartbeat (a.k.a. ha-cluster).
47
+ #
48
+ # A sample udpport directive is shown below.
49
+ #
50
+ # udpport 694
51
+ #
52
+ # You have to configure udpport (in ha.cf) before you configure
53
+ # ucast or bcast, if not heartbeat will use the default port (694).
54
+ #
55
+ # Note
56
+ #
57
+ # Due to a specification error in the syntax of the mcast directive,
58
+ # this directive does not apply to mcast communications.
59
+ #
60
+ attr_accessor :udpport
61
+
62
+ #
63
+ # This directive specifies what users and/or groups are allowed to connect to
64
+ # a specific API group name. The syntax is simple:
65
+ #
66
+ # apiauth apigroupname [uid=uid1,uid2 ...] [gid=gid1,gid2 ...]
67
+ #
68
+ # You can specify either a uid list, or a gid list, or both. However you must
69
+ # specify either a uid list or a gid list. If you include both a uid list and a
70
+ # gid list, then a process is authorized to connect to that API group if if it is
71
+ # either in the uid-list or it is in the gid-list.
72
+ #
73
+ # The API group name default has special meaning. If it is specified, it will
74
+ # be used for authorizing clients without any API group name, and all client
75
+ # groups not identified by any other apiauth directive.
76
+ #
77
+ # Unless you specify otherwise in the ha.cf file, certain services will be
78
+ # provided default authorizations as follows:
79
+ #
80
+ # Table A.1. Default service authorizations
81
+ # Service Default apiauth
82
+ # ipfail uid=hacluster
83
+ # ccm gid=haclient
84
+ # ping gid=haclient
85
+ # cl_status gid=haclient
86
+ # lha-snmpagent uid=root
87
+ # crm uid=hacluster
88
+ #
89
+ attr_accessor :apiauth
90
+
91
+ #
92
+ # The autojoin directive enables nodes to join automatically just by
93
+ # communicating with the cluster, hence not requiring node directives in the ha.cf
94
+ # file. Since our communication is normally strongly authenticated, only nodes
95
+ # which know the cluster key can join (automatically or otherwise).
96
+ #
97
+ # The values you can give for the autojoin directive have the following
98
+ # meanings:
99
+ #
100
+ # * none: disables automatic joining.
101
+ # * other: allows nodes other than ourself who are not listed in ha.cf to
102
+ # join automatically. In other words, our node has to be listed in ha.cf, but
103
+ # other nodes do not.
104
+ # * any: allows any node to join automatically without being listed in
105
+ # ha.cf, even the current node.
106
+ #
107
+ # Note that the set of nodes currently considered part of the cluster is kept
108
+ # in the hostcache file. With autojoin enabled, the node directive is no longer
109
+ # authoritative - the hostcache file is.
110
+ #
111
+ attr_accessor :autojoin
112
+
113
+ #
114
+ # The bcast directive is used to configure which interfaces Heartbeat sends
115
+ # UDP broadcast traffic on. More than one interface can be specified on the line.
116
+ # The udpport directive is used to configure which port is used for these
117
+ # broadcast communications if the udpport directive is specified before the bcast
118
+ # directive, otherwise the default port will be used. A couple of sample bcast
119
+ # lines are shown below.
120
+ #
121
+ # bcast eth0 eth1 # on Linux systems
122
+ # bcast le0# for Solaris systems
123
+ #
124
+ # Note
125
+ #
126
+ # Broadcast links are not supported in Pacemaker clusters on BSD systems.
127
+ #
128
+ attr_accessor :bcast
129
+
130
+ #
131
+ # The compression directive sets which compression method will be used when a
132
+ # message is big and compression is needed.
133
+ #
134
+ # It could be either zlib or bz2, depending on whether you have the
135
+ # corresponding library in the system. You can check
136
+ # /usr/lib/heartbeat/plugins/HBcompress to see what compression module is
137
+ # available.
138
+ #
139
+ # If this directive is not set, there will be no compression.
140
+ #
141
+ attr_accessor :compression
142
+
143
+ #
144
+ # The compression_threshold directive sets the threshold to compress a
145
+ # message, e.g. if the threshold is 1, then any message with size greater than 1
146
+ # KB will be compressed. The default is 2 (KB). This directive only makes sense if
147
+ # you have set the compression directive.
148
+ #
149
+ attr_accessor :compression_threshold
150
+
151
+ #
152
+ # The conn_logd_time directive specifies the time Heartbeat will reconnect to
153
+ # the logging daemon if the connection between Heartbeat and the logging daemon is
154
+ # broken. The conn_logd_time is specified according to the Heartbeat time syntax,
155
+ # for example:
156
+ #
157
+ # conn_logd_time 60 #60 seconds
158
+ #
159
+ # The default is 60 seconds.
160
+ # Note
161
+ #
162
+ # Heartbeat will not automatically reconnect to the logging daemon. It only
163
+ # tries to reconnect when it needs to log a message and conn_logd_time have passed
164
+ # since the last attempt to connect.
165
+ #
166
+ attr_accessor :conn_logd_time
167
+
168
+ #
169
+ # The coredumps directive tells Heartbeat to do things to enable making core
170
+ # dumps - should it need to dump core.
171
+ #
172
+ # The allowed values are true and false.
173
+ #
174
+ attr_accessor :coredumps
175
+
176
+ #
177
+ # Enables the Pacemaker cluster manager. For historical reasons, the default
178
+ # for this option is off; however, it should always be set to respawn.
179
+ #
180
+ # When set to respawn, the directive automatically implies:
181
+ #
182
+ # apiauth stonithduid=root
183
+ # apiauth crmduid=hacluster
184
+ # apiauth cib uid=hacluster
185
+ #
186
+ # respawn hacluster ccm
187
+ # respawn hacluster cib
188
+ # respawn rootstonithd
189
+ # respawn rootlrmd
190
+ # respawn hacluster crmd
191
+ #
192
+ attr_accessor :crm
193
+
194
+ #
195
+ # The deadtime directive is used to specify how quickly Heartbeat should
196
+ # decide that a node in a cluster is dead. Setting this value too low will cause
197
+ # the system to falsely declare itself dead. Setting it too high will delay
198
+ # takeover after the failure of a node in the cluster.
199
+ attr_accessor :deadtime
200
+
201
+ #
202
+ # The debug directive is used to set the level of debugging in effect in the
203
+ # system. Production systems should have their debug level set to zero (i.e.,
204
+ # turned off). This is the default. Legal values of the debug option are between
205
+ # 0-255. The most useful values are between 0 (off) and 3. Setting the debug level
206
+ # greater than 1 can have an adverse effect on the size of your log files, and on
207
+ # the system's ability to send heartbeats at rapid rates, thus affecting the
208
+ # cluster reliability.
209
+ #
210
+ # The debug level of the system can also be specified on the command line
211
+ # using the -d option. Additionally, the debug level of the system can be
212
+ # dynamically changed by sending the heartbeat process SIGUSR1 and SIGUSR2
213
+ # signals. SIGUSR1 raises the debug level, and SIGUSR2 lowers it.
214
+ #
215
+ attr_accessor :debug
216
+
217
+ #
218
+ # The hbgenmethod directive specifies how Heartbeat should compute its current
219
+ # generation number for communications. This is a specialized and obscure
220
+ # directive, used mainly in firewalls which have no local disk, and other devices
221
+ # which do not have a method of storing data persistently across reboots. It
222
+ # defaults to storing the Heartbeat generations in a file. Generation numbers are
223
+ # used by Heartbeat for replay attack protection.
224
+ #
225
+ # hbgenmethod time|file
226
+ #
227
+ # Warning
228
+ #
229
+ # If one specifies the time method, there are certain possible cases where
230
+ # troubles can arise. If a machine restarts Heartbeat and its local time of day
231
+ # clock is less than or equal to than the value of the time of day clock when
232
+ # Heartbeat last started, then that node will be unable to join the cluster.
233
+ #
234
+ attr_accessor :hbgenmethod
235
+
236
+ #
237
+ # The initdead parameter is used to set the time that it takes to declare a
238
+ # cluster node dead when Heartbeat is first started. This parameter generally
239
+ # needs to be set to a higher value, because experience suggests that it sometimes
240
+ # takes operating systems many seconds for their communication systems before they
241
+ # operate correctly. initdead is specified according to the Heartbeat time syntax.
242
+ # A sample initdead value is shown below:
243
+ #
244
+ # initdead 30
245
+ #
246
+ # In some switched network environments, switches engage in a spanning tree
247
+ # algorithm whenever a NIC connects to a port. This can take a long time to
248
+ # complete, and it is only necessary if the NIC being connected is another switch.
249
+ # If this is the case, you may be able to configure certain NICs as not being
250
+ # switches and shrink the connection delay significantly. If not, you'll need to
251
+ # raise initdead to make this problem go away.
252
+ #
253
+ # If this is set too low, you'll see one node declare the other as dead.
254
+ #
255
+ attr_accessor :initdead
256
+
257
+ #
258
+ # The keepalive directive sets the interval between heartbeat packets. It is
259
+ # specified according to the Heartbeat time syntax.
260
+ #
261
+ attr_accessor :keepalive
262
+
263
+ #
264
+ # The logfacility is used to tell Heartbeat which syslog logging facility it
265
+ # should use for logging its messages.
266
+ #
267
+ # The possible values for logfacility vary by operating system, but some of
268
+ # the most common ones are {auth, authpriv, daemon, syslog, user, local0, local1,
269
+ # local2, local3, local4, local5, local6, local7}.
270
+ #
271
+ # A sample logfacility directive is shown below:
272
+ #
273
+ # logfacility local7
274
+ #
275
+ # If you want to disable logging to syslog:
276
+ #
277
+ # logfacility none
278
+ #
279
+ attr_accessor :logfacility
280
+
281
+ #
282
+ # The mcast directive is used to configure a multicast communication path. The
283
+ # syntax of an mcast directive is:
284
+ #
285
+ # mcast dev mcast-group udp-port ttl 0
286
+ #
287
+ # * dev - IP device to send/rcv heartbeats on
288
+ # * mcast-group - multicast group to join (class D multicast address
289
+ # 224.0.0.0 - 239.255.255.255). For most Heartbeat uses, the first byte should be
290
+ # 239.
291
+ # * port - UDP port to sendto/rcvfrom (set this to the same value as
292
+ # udpport)
293
+ # * ttl - the ttl value for outbound heartbeats. This affects how far the
294
+ # multicast packet will propagate. (0-255). Set to 1 for the current subnet. Must
295
+ # be greater than zero.
296
+ #
297
+ # A sample mcast directive is shown below:
298
+ #
299
+ # mcast eth0 239.0.0.1 694 1 0
300
+ #
301
+ attr_accessor :mcast
302
+
303
+ #
304
+ # The msgfmt directive specifies the format Heartbeat uses in wire.
305
+ #
306
+ # * classic - Heartbeat will convert a message into a string and transmit
307
+ # in wire. Binary values are converted with a base64 library.
308
+ # * netstring - Binary messages will be transmitted directly. This is more
309
+ # efficient since it avoids conversion between string and binary values.
310
+ #
311
+ # When in doubt, leave the default (classic).
312
+ #
313
+ attr_accessor :msgfmt
314
+
315
+ #
316
+ # The node directive tells what machines are in the cluster. The syntax of the
317
+ # node directive is simple:
318
+ #
319
+ # node nodename1 nodename2 ...
320
+ #
321
+ # Node names in the directive must match the "uname -n" of that machine.
322
+ #
323
+ # You can declare multiple node names in one directive. You can also use the
324
+ # directive multiple times. Normally every node in the cluster must be listed in
325
+ # the ha.cf file, including the current node, unless the autojoin directive is
326
+ # enabled.
327
+ #
328
+ # The node directive is not completely authoritative with regard to nodes
329
+ # heartbeat will communicate with. If a node has ever been added in the past, it
330
+ # will tend to remain in the hostcache file more until it's manually removed.
331
+ #
332
+ attr_accessor :node
333
+
334
+ #
335
+ # The realtime directive specifies whether or not Heartbeat should try and
336
+ # take advantage of the operating system's realtime scheduling features. When
337
+ # enabled, Heartbeat will lock itself into memory, and raise its priority to a
338
+ # realtime priority (as set by the rtprio directive). This feature is mainly used
339
+ # for debugging various kinds of loops which might otherwise cripple the system
340
+ # and impair debugging them.
341
+ #
342
+ # realtime on|off
343
+ #
344
+ # The default is on.
345
+ #
346
+ attr_accessor :realtime
347
+
348
+ #
349
+ # The rtprio directive is used to specify the priority at which Heartbeat
350
+ # runs. It does not need to be specified unless other realtime priority programs
351
+ # are also running on the system. The minimum and maximum values for this field
352
+ # can be determined from the sched_get_priority_min(SCHED_FIFO) and
353
+ # sched_get_priority_max(SCHED_FIFO) calls respectively. The default value for
354
+ # rtprio is halfway between the minimum and maximum values.
355
+ #
356
+ # A sample rtprio directive is shown below:
357
+ #
358
+ # rtprio 5
359
+ #
360
+ attr_accessor :rtprio
361
+
362
+ #
363
+ # The ucast directive configures Heartbeat to communicate over a UDP unicast
364
+ # communications link. The udpport directive is used to configure which port is
365
+ # used for these unicast communications if the udpport directive is specified
366
+ # before the ucast directive, otherwise the default port will be used.
367
+ #
368
+ # The general syntax of a ucast directive is:
369
+ #
370
+ # ucast dev peer-ip-address
371
+ #
372
+ # Where dev is the device to use when talking to the peer, and peer-ip-address
373
+ # is the IP address we will send packets to.
374
+ #
375
+ # A sample ucast directive is shown below:
376
+ #
377
+ # ucast eth0 10.10.10.133
378
+ #
379
+ # This directive will cause us to send packets to 10.10.10.133 over interface
380
+ # eth0.
381
+ #
382
+ # Note that ucast directives which go to the local machine are effectively
383
+ # ignored. This allows the ha.cf directives on all machines to be identical.
384
+ #
385
+ attr_accessor :ucast
386
+
387
+ #
388
+ # In the normal case, heartbeat generates a UUID for each node in the system
389
+ # as a way of uniquely identifying a node - even if it should change nodenames.
390
+ # This UUID is typically stored in the file /var/lib/heartbeat/hb_uuid.
391
+ #
392
+ # For certain kinds of installations (those booting from CDs or other
393
+ # read-only media), it is impossible for heartbeat to save a generated to disk as
394
+ # it normally does. In these cases, one can use the uuidfrom directive to instruct
395
+ # heartbeat to use the nodename as though it were a UUID, by specifying uuidfrom
396
+ # nodename.
397
+ #
398
+ # All possible legal uuidfrom directives are shown below.
399
+ #
400
+ # uuidfrom file
401
+ # uuidfrom nodename
402
+ #
403
+ attr_accessor :uuidfrom
404
+
405
+ #
406
+ # The warntime directive is used to specify how quickly Heartbeat should issue
407
+ # a "late heartbeat" warning.
408
+ #
409
+ # The warntime value is specified according to the HeartbeatTimeSyntax. A
410
+ # sample warntime specification is shown below.
411
+ #
412
+ # warntime 10 # 10 seconds
413
+ #
414
+ # The warntime directive is important for tuning deadtime
415
+ #
416
+ attr_accessor :warntime
417
+
418
+ #
419
+ # In legacy Heartbeat clusters, the auto_failback option would determine
420
+ # whether a resource would automatically fail back to its "primary" node, or
421
+ # remain on whatever node is serving it until that node fails, or an administrator
422
+ # intervenes. The possible values for auto_failback were:
423
+ #
424
+ # * on - enable automatic failbacks
425
+ # * off - disable automatic failback
426
+ # * legacy - enable automatic failbacks in systems where all nodes in
427
+ # the cluster do not yet support the auto_failback option.
428
+ #
429
+ attr_accessor :auto_failback
430
+
431
+ #
432
+ # The baud directive is used to set the speed for serial communications.
433
+ # Any of the following speeds can be specified, provided they are supported by
434
+ # your operating system: 9600, 19200, 38400, 57600, 115200, 230400, 460800. The
435
+ # default speed is 19200.
436
+ #
437
+ attr_accessor :baud
438
+
439
+ #
440
+ # The deadping directive is used to specify how quickly Heartbeat should decide
441
+ # that a ping node in a cluster is dead. Setting this value too low will cause the
442
+ # system to falsely declare the ping node dead. Setting it too high will delay
443
+ # detection of communication failure.
444
+ #
445
+ attr_accessor :deadping
446
+
447
+ #
448
+ #
449
+ # The debugfile directive specifies the file Heartbeat will write debug messages to.
450
+ #
451
+ # This directive is ignored when use_logd is specified. Enabling use_logd is
452
+ # the recommended approach.
453
+ #
454
+ attr_accessor :debugfile
455
+
456
+ #
457
+ # Hbaping directives are given to declare fiber channel devices as ping nodes.
458
+ #
459
+ attr_accessor :hbaping
460
+
461
+ #
462
+ # The hopfudge directive controls how many nodes a packet can be forwarded
463
+ # through before it is thrown away in the worst case. However, the hopfudge value
464
+ # is added to the number of nodes in the system. It defaults to 1.
465
+ #
466
+ attr_accessor :hopfudge
467
+
468
+ #
469
+ # The logfile directive configures a log file. All non-debug messages from
470
+ # Heartbeat will go into this file.
471
+ #
472
+ # This directive is ignored when use_logd is specified. Enabling use_logd
473
+ # is the recommended approach.
474
+ #
475
+ attr_accessor :logfile
476
+
477
+ #
478
+ # Ping directives are given to declare ping nodes to Heartbeat. The syntax
479
+ # of the ping directive is simple:
480
+ #
481
+ # ping ip-address ...
482
+ #
483
+ # Each IP address listed in a ping directive is considered to be independent.
484
+ # That is, connectivity to each node is considered to be equally important.
485
+ #
486
+ # In order to declare that a group of nodes are equally qualified for a particular
487
+ # function, and that the presence of any of them indicates successful communication,
488
+ # use the ping_group directive.
489
+ #
490
+ attr_accessor :ping
491
+
492
+ #
493
+ # Ping group directives are given to declare a group ping node to Heartbeat.
494
+ # syntax of the ping_group directive is as follows:
495
+ #
496
+ # ping_group group-name ip-address ...
497
+ #
498
+ # Each IP address listed in a ping_group directive is considered to be related,
499
+ # and connectivity to any one node is considered to be connectivity to the group.
500
+ #
501
+ # A ping group is considered by Heartbeat to be a single cluster node (group-name).
502
+ # The ability to communicate with any of the group members means that the group-name member
503
+ # is reachable. This is useful when (for example) two different routers may be used to contact
504
+ # the internet, depending on which is up, or when finding an appropriate reliable single ping
505
+ # node is difficult.
506
+ #
507
+ attr_accessor :ping_group
508
+
509
+ #
510
+ # The respawn directive is used to specify a program to run and monitor while it runs.
511
+ # If this program exits with anything other than exit code 100, it will be automatically
512
+ # restarted. The first parameter is the user id to run the program under, and the second
513
+ # parameter is the program to run. Subsequent parameters will be given to the
514
+ # program as arguments.
515
+ #
516
+ attr_accessor :respawn
517
+
518
+ #
519
+ # The serial directive tells Heartbeat to use the specified serial port(s) for its
520
+ # communication. The parameters to the serial directive are the names of tty devices
521
+ # suitable for opening without waiting for carrier first. On Linux, those ports are
522
+ # typically named /dev/ttySX.
523
+ #
524
+ # A few sample serial directives are shown below:
525
+ #
526
+ # serial /dev/ttyS0 /dev/ttyS1 # Linux
527
+ # serial /dev/cuaa0 # FreeBSD
528
+ # serial /dev/cua/a # Solaris
529
+ #
530
+ # The baud directive is used to configure the baud rate for the port(s) if the baud
531
+ # directive is specified before the serial directive, otherwise the default baud rate
532
+ # will be used.
533
+ #
534
+ attr_accessor :serial
535
+
536
+ #
537
+ # The stonith directive is used to configure Heartbeat's legacy STONITH configuration.
538
+ # It assumes you're going to put in a STONITH configuration file on each machine in the
539
+ # cluster to configure the (single) STONITH device that this node will use to reset the
540
+ # other node in the cluster.
541
+ #
542
+ attr_accessor :stonith
543
+
544
+ #
545
+ # The stonith_host directive is used to configure Heartbeat's (release 1 only),
546
+ # STONITH configuration. With this directive, you put all the STONITH configuration
547
+ # information for the devices in your cluster in the ha.cf file, rather than in
548
+ # a separate file.
549
+ #
550
+ attr_accessor :stonith_host
551
+
552
+ #
553
+ # This directive enables traditional compression. It is highly recommended that this
554
+ # be set to off (the default); otherwise heartbeat performance can be significantly
555
+ # negatively impacted.
556
+ #
557
+ attr_accessor :traditional_compression
558
+
559
+ #
560
+ # The watchdog directive configures Heartbeat to use a watchdog device. In some
561
+ # circumstances, a watchdog device can be used in place of a STONITH device. In any case,
562
+ # it is a reasonable thing to configure if you don't have a STONITH device, or if you
563
+ # wish, in addition to your STONITH device.
564
+ #
565
+ # It is the purpose of a watchdog device to shut the machine down if Heartbeat
566
+ # does not hear its own heartbeats as often as it thinks it should. This keeps things
567
+ # like scheduler bugs from becoming split-brain configurations.
568
+ #
569
+ # The general syntax of a watchdog directive is:
570
+ #
571
+ # watchdog watchdog-device-name
572
+ #
573
+ # A sample watchdog directive is shown below:
574
+ #
575
+ # watchdog /dev/watchdog
576
+ #
577
+ # The most common watchdog device currently used with general Linux systems is the
578
+ # softdog device. The softdog device is a software-based watchdog device and is usually
579
+ # referred to as /dev/watchdog - although like most UNIX devices, this is a convention
580
+ # not a rule.
581
+ attr_accessor :watchdog
582
+
583
+ #
584
+ # Returns a new RhaConfig Object
585
+ #
586
+ def initialize()
587
+ end
588
+
589
+ #
590
+ # Compile the RhaConfig configuration
591
+ #
592
+ def config
593
+ conf = option_string()
594
+ return conf
595
+ end
596
+
597
+ private
598
+
599
+ def option_string()
600
+ ostring = ""
601
+
602
+ if @use_logd
603
+ ostring += "use_logd " + @use_logd.to_s + " " + "\n"
604
+ end
605
+
606
+ if @udpport
607
+ ostring += "udpport " + @udpport.to_s + " " + "\n"
608
+ end
609
+
610
+ if @apiauth
611
+ ostring += "apiauth " + @apiauth.to_s + " " + "\n"
612
+ end
613
+
614
+ if @autojoin
615
+ ostring += "autojoin " + @autojoin.to_s + " " + "\n"
616
+ end
617
+
618
+ if @bcast
619
+ ostring += "bcast " + @bcast.to_s + " " + "\n"
620
+ end
621
+
622
+ if @compression
623
+ ostring += "compression " + @compression.to_s + " " + "\n"
624
+ end
625
+
626
+ if @compression_threshold
627
+ ostring += "compression_threshold " + @compression_threshold.to_s + " " + "\n"
628
+ end
629
+
630
+ if @conn_logd_time
631
+ ostring += "conn_logd_time " + @conn_logd_time.to_s + " " + "\n"
632
+ end
633
+
634
+ if @coredumps
635
+ ostring += "coredumps " + @coredumps.to_s + " " + "\n"
636
+ end
637
+
638
+ if @crm
639
+ ostring += "crm " + @crm.to_s + " " + "\n"
640
+ end
641
+
642
+ if @deadtime
643
+ ostring += "deadtime " + @deadtime.to_s + " " + "\n"
644
+ end
645
+
646
+ if @debug
647
+ ostring += "debug " + @debug.to_s + " " + "\n"
648
+ end
649
+
650
+ if @hbgenmethod
651
+ ostring += "hbgenmethod " + @hbgenmethod.to_s + " " + "\n"
652
+ end
653
+
654
+ if @initdead
655
+ ostring += "initdead " + @initdead.to_s + " " + "\n"
656
+ end
657
+
658
+ if @keepalive
659
+ ostring += "keepalive " + @keepalive.to_s + " " + "\n"
660
+ end
661
+
662
+ if @logfacility
663
+ ostring += "logfacility " + @logfacility.to_s + " " + "\n"
664
+ end
665
+
666
+ if @mcast
667
+ ostring += "mcast " + @mcast.to_s + " " + "\n"
668
+ end
669
+
670
+ if @msgfmt
671
+ ostring += "msgfmt " + @msgfmt.to_s + " " + "\n"
672
+ end
673
+
674
+ if @node
675
+ ostring += "node " + @node.to_s + " " + "\n"
676
+ end
677
+
678
+ if @realtime
679
+ ostring += "realtime " + @realtime.to_s + " " + "\n"
680
+ end
681
+
682
+ if @rtprio
683
+ ostring += "rtprio " + @rtprio.to_s + " " + "\n"
684
+ end
685
+
686
+ if @ucast
687
+ ostring += "ucast " + @ucast.to_s + " " + "\n"
688
+ end
689
+
690
+ if @uuidfrom
691
+ ostring += "uuidfrom " + @uuidfrom.to_s + " " + "\n"
692
+ end
693
+
694
+ if @warntime
695
+ ostring += "warntime " + @warntime.to_s + " " + "\n"
696
+ end
697
+
698
+ if @auto_failback
699
+ ostring += "auto_failback " + @auto_failback.to_s + " " + "\n"
700
+ end
701
+
702
+ if @baud
703
+ ostring += "baud " + @baud.to_s + " " + "\n"
704
+ end
705
+
706
+ if @deadping
707
+ ostring += "deadping " + @deadping.to_s + " " + "\n"
708
+ end
709
+
710
+ if @debugfile
711
+ ostring += "debugfile " + @debugfile.to_s + " " + "\n"
712
+ end
713
+
714
+ if @hbaping
715
+ ostring += "hbaping " + @hbaping.to_s + " " + "\n"
716
+ end
717
+
718
+ if @hopfudge
719
+ ostring += "hopfudge " + @hopfudge.to_s + " " + "\n"
720
+ end
721
+
722
+ if @logfile
723
+ ostring += "logfile " + @logfile.to_s + " " + "\n"
724
+ end
725
+
726
+ if @ping
727
+ ostring += "ping " + @ping.to_s + " " + "\n"
728
+ end
729
+
730
+ if @ping_group
731
+ ostring += "ping_group " + @ping_group.to_s + " " + "\n"
732
+ end
733
+
734
+ if @respawn
735
+ ostring += "respawn " + @respawn.to_s + " " + "\n"
736
+ end
737
+
738
+ if @serial
739
+ ostring += "serial " + @serial.to_s + " " + "\n"
740
+ end
741
+
742
+ if @stonith
743
+ ostring += "stonith " + @stonith.to_s + " " + "\n"
744
+ end
745
+
746
+ if @stonith_host
747
+ ostring += "stonith_host " + @stonith_host.to_s + " " + "\n"
748
+ end
749
+
750
+ if @traditional_compression
751
+ ostring += "traditional_compression " + @traditional_compression.to_s + " " + "\n"
752
+ end
753
+
754
+ if @watchdog
755
+ ostring += "watchdog " + @watchdog.to_s + " " + "\n"
756
+ end
757
+
758
+ return ostring
759
+
760
+ end
761
+ end
762
+