Hello community, here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2015-05-15 07:44:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2015-04-27 13:05:03.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.crmsh.new/crmsh.changes 2015-05-15 07:44:34.000000000 +0200 @@ -1,0 +2,13 @@ +Wed May 13 13:11:43 UTC 2015 - [email protected] + +- Update to version 2.2.0~rc2+git.1431438882.ae4b493: + + doc: Update the documentation for the upgrade command + + high: ui_cluster: Add copy command + + low: schema: Don't leak PacemakerError exceptions (#93) + + Fix CFLAGS for supporting triplet paths with pacemaker + + medium: ui_configure: Wait for DC when removing running resource + + Medium: hb_report: use faster zypper interface if available + + Low: doc: simplify to make it work with python 2.6 + + Medium: doc: add history guide + +------------------------------------------------------------------- Old: ---- crmsh-2.2.0~rc2+git.1429973374.667891c.tar.bz2 New: ---- crmsh-2.2.0~rc2+git.1431438882.ae4b493.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.GmsPbH/_old 2015-05-15 07:44:35.000000000 +0200 +++ /var/tmp/diff_new_pack.GmsPbH/_new 2015-05-15 07:44:35.000000000 +0200 @@ -36,7 +36,7 @@ Summary: High Availability cluster command-line interface License: GPL-2.0+ Group: %{pkg_group} -Version: 2.2.0~rc2+git.1429973374.667891c +Version: 2.2.0~rc2+git.1431438882.ae4b493 Release: 0%{?crmsh_release}%{?dist} Url: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GmsPbH/_old 2015-05-15 07:44:35.000000000 +0200 +++ /var/tmp/diff_new_pack.GmsPbH/_new 2015-05-15 07:44:35.000000000 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">667891c4a824eefc22aa1e15453a9433d77eab98</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">ae4b4937abeef5271d92957ee3aec8f74630e0a0</param></service></servicedata> \ No newline at end of file ++++++ crmsh-2.2.0~rc2+git.1429973374.667891c.tar.bz2 -> crmsh-2.2.0~rc2+git.1431438882.ae4b493.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/configure.ac new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/configure.ac --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/configure.ac 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/configure.ac 2015-05-13 15:11:43.000000000 +0200 @@ -109,6 +109,7 @@ eval sysconfdir="`eval echo ${sysconfdir}`" eval sharedstatedir="`eval echo ${sharedstatedir}`" eval localstatedir="`eval echo ${localstatedir}`" +eval includedir="`eval echo ${includedir}`" eval libdir="`eval echo ${libdir}`" eval infodir="`eval echo ${infodir}`" eval mandir="`eval echo ${mandir}`" @@ -123,7 +124,7 @@ fi AC_SUBST(docdir) -CFLAGS="$CFLAGS -I${prefix}/include/heartbeat -I${prefix}/include/pacemaker" +CFLAGS="$CFLAGS -I${prefix}/include/heartbeat -I${includedir}/heartbeat -I${prefix}/include/pacemaker -I${includedir}/pacemaker" for j in prefix exec_prefix bindir sbindir libexecdir datadir sysconfdir \ sharedstatedir localstatedir libdir infodir \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/crm.8.adoc new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/crm.8.adoc --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/crm.8.adoc 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/crm.8.adoc 2015-05-13 15:11:43.000000000 +0200 @@ -933,6 +933,24 @@ run "cat /proc/uptime" ............... +[[cmdhelp_cluster_copy,Copy file to other cluster nodes]] +==== `copy` + +Copy file to other cluster nodes. + +Copies the given file to all other nodes unless given a +list of nodes to copy to as argument. + +Usage: +............... +copy <filename> [nodes ...] +............... + +Example: +............... +copy /etc/motd +............... + [[cmdhelp_cluster_start,Start cluster services]] ==== `start` @@ -3549,25 +3567,28 @@ template two-apaches.txt ............... -[[cmdhelp_configure_upgrade,upgrade the CIB to version 1.0]] +[[cmdhelp_configure_upgrade,upgrade the CIB]] ==== `upgrade` -If you get the `CIB not supported` error, which typically means -that the current CIB version is coming from the older release, -you may try to upgrade it to the latest revision. The command -to perform the upgrade is: -............... -# cibadmin --upgrade --force -............... - -If we don't recognize the current CIB as the old one, but you're -sure that it is, you may force the command. +Attempts to upgrade the CIB to validate with the current +version. Commonly, this is required if the error +`CIB not supported` occurs. It typically means that the +active CIB version is coming from an older release. + +As a safety precaution, the force argument is required if the ++validation-with+ attribute is set to anything other than ++0.6+. Thus in most cases, it is required. Usage: ............... upgrade [force] ............... +Example: +............... +upgrade force +............... + [[cmdhelp_configure_user,define user access rights]] ==== `user` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/Makefile new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/Makefile --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/Makefile 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/Makefile 2015-05-13 15:11:43.000000000 +0200 @@ -3,10 +3,48 @@ SRC := faq.adoc documentation.adoc development.adoc installation.adoc \ configuration.adoc about.adoc rsctest-guide.adoc \ history-guide.adoc start-guide.adoc man-1.2.adoc scripts.adoc man-2.0.adoc +HISTORY_LISTINGS = include/history-guide/nfs-probe-err.typescript \ + include/history-guide/sample-cluster.conf.crm \ + include/history-guide/status-probe-fail.typescript \ + include/history-guide/resource-trace.typescript \ + include/history-guide/stonith-corosync-stopped.typescript \ + include/history-guide/basic-transition.typescript \ + include/history-guide/diff.typescript \ + include/history-guide/info.typescript \ + include/history-guide/resource.typescript \ + include/history-guide/transition-log.typescript TGT := $(patsubst %.adoc,gen/%/index.html,$(SRC)) CSS := css/crm.css css/font-awesome.min.css CSS := $(patsubst %,gen/%,$(CSS)) -IMG := img/loader.gif img/laptop.png img/servers.gif +ICONS := \ + img/icons/caution.png \ + img/icons/example.png \ + img/icons/home.png \ + img/icons/important.png \ + img/icons/next.png \ + img/icons/note.png \ + img/icons/prev.png \ + img/icons/tip.png \ + img/icons/up.png \ + img/icons/warning.png \ + img/icons/callouts/10.png \ + img/icons/callouts/11.png \ + img/icons/callouts/12.png \ + img/icons/callouts/13.png \ + img/icons/callouts/14.png \ + img/icons/callouts/15.png \ + img/icons/callouts/1.png \ + img/icons/callouts/2.png \ + img/icons/callouts/3.png \ + img/icons/callouts/4.png \ + img/icons/callouts/5.png \ + img/icons/callouts/6.png \ + img/icons/callouts/7.png \ + img/icons/callouts/8.png \ + img/icons/callouts/9.png +IMG := $(ICONS) img/loader.gif img/laptop.png img/servers.gif \ + img/history-guide/sample-cluster.conf.png \ + img/history-guide/smallapache-start.png IMG := $(patsubst %,gen/%,$(IMG)) FONTS := fonts/FontAwesome.otf fonts/fontawesome-webfont.eot \ fonts/fontawesome-webfont.svg fonts/fontawesome-webfont.ttf \ @@ -23,14 +61,16 @@ gen/index.html: index.adoc $(CRMCONF) @mkdir -p $(dir $@) - @$(ASCIIDOC) --unsafe -b html5 -f $(CRMCONF) -o $@ $< + @$(ASCIIDOC) --unsafe -b html5 -a icons -a iconsdir=/img/icons -f $(CRMCONF) -o $@ $< @python ./postprocess.py -o $@ $< gen/%/index.html: %.adoc $(CRMCONF) @mkdir -p $(dir $@) - @$(ASCIIDOC) --unsafe -b html5 -f $(CRMCONF) -o $@ $< + @$(ASCIIDOC) --unsafe -b html5 -a icons -a iconsdir=/img/icons -f $(CRMCONF) -o $@ $< @python ./postprocess.py -o $@ $< +gen/history-guide/index.html: $(HISTORY_LISTINGS) + gen/man/index.html: ../crm.8.adoc $(CRMCONF) @mkdir -p $(dir $@) @$(ASCIIDOC) --unsafe -b html5 -f $(CRMCONF) -o $@ $< @@ -60,6 +100,21 @@ @cp -r $< $@ @echo "+ $@" +gen/img/icons/callouts/%: img/icons/callouts/% + @mkdir -p gen/img/icons/callouts + @cp -r $< $@ + @echo "+ $@" + +gen/img/icons/%: img/icons/% + @mkdir -p gen/img/icons + @cp -r $< $@ + @echo "+ $@" + +gen/img/history-guide/%: img/history-guide/% + @mkdir -p gen/img/history-guide + @cp -r $< $@ + @echo "+ $@" + gen/img/%: img/% @mkdir -p gen/img @cp -r $< $@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/css/crm.css new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/css/crm.css --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/css/crm.css 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/css/crm.css 2015-05-13 15:11:43.000000000 +0200 @@ -476,3 +476,11 @@ .vg { color: #008080 } /* Name.Variable.Global */ .vi { color: #008080 } /* Name.Variable.Instance */ .il { color: #009999 } /* Literal.Number.Integer.Long */ +.highlight .-Color-Black { color: #000000 } /* Color.Black */ +.highlight .-Color-Blue { color: #0000c0 } /* Color.Blue */ +.highlight .-Color-Cyan { color: #008080 } /* Color.Cyan */ +.highlight .-Color-Green { color: #008000 } /* Color.Green */ +.highlight .-Color-Magenta { color: #c000c0 } /* Color.Magenta */ +.highlight .-Color-Red { color: #c00000 } /* Color.Red */ +.highlight .-Color-White { color: #c0c0c0 } /* Color.White */ +.highlight .-Color-Yellow { color: #808000 } /* Color.Yellow */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/documentation.adoc new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/documentation.adoc --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/documentation.adoc 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/documentation.adoc 2015-05-13 15:11:43.000000000 +0200 @@ -18,6 +18,7 @@ * link:/man[Manual (Development)], link:/man-2.0[(Release 2.x)], link:/man-1.2[(Release 1.2)] * link:/installation[Installation] * link:/start-guide[Getting Started] +* link:/history-guide[History Guide] * link:/rsctest-guide[Resource Testing Guide] * link:/configuration[Configuration] * link:/scripts[Cluster scripts] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/history-guide.adoc new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/history-guide.adoc --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/history-guide.adoc 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/history-guide.adoc 2015-05-13 15:11:43.000000000 +0200 @@ -1,3 +1,275 @@ = Cluster history = +:source-highlighter: pygments -Work in Progress. Stay tuned. +This guide should help administrators and consultants tackle +issues in Pacemaker cluster installations. We concentrate +on troubleshooting and analysis methods with the crmsh history. + +Cluster leaves numerous traces behind, more than any other +system. The logs and the rest are spread among all cluster nodes +and multiple directories. The obvious difficulty is to show that +information in a consolidated manner. This is where crmsh +history helps. + +Hopefully, the guide will help you investigate your +specific issue with more efficiency and less effort. + +== Sample cluster + +In <<Listing 1>> a modestly complex sample cluster is shown with +which we can experiment and break in some hopefully instructive +ways. + +NOTE: We won't be going into how to setup nodes or configure the + cluster. For that, please refer to the + link:/start-guide[Getting Started] document. + +[source,crmsh] +[caption="Listing 1: "] +.Sample cluster configuration[[Listing 1]] +----------------- +include::include/history-guide/sample-cluster.conf.crm[] +----------------- + +If you're new to clusters, that configuration may look +overwhelming. A graphical presentation in <<Image 1>> of the +essential elements and relations between them is easier on the eye +(and the mind). + +[caption="Image 1: "] +.Sample cluster configuration as a graph[[Image 1]] +image::/img/history-guide/sample-cluster.conf.png[link="/img/history-guide/sample-cluster.conf.png"] + +As homework, try to match the two cluster representations. + +== Quick (& dirty) start + +For the impatient, we give here a few examples of history use. + +Most of the time you will be dealing with various resource +(a.k.a. application) induced phenomena. For instance, while +preparing this document we noticed that a probe failed repeatedly +on a node which wasn't even running the resource <<Listing 2>>. + +[source,ansiclr] +[caption="Listing 2: "] +.crm status output[[Listing 2]] +----------------- +include::include/history-guide/status-probe-fail.typescript[] +----------------- + +The history +resource+ command shows log messages relevant to the +supplied resource <<Listing 3>>. + +[source,ansiclr] +[caption="Listing 3: "] +.Logs on failed +nfs-server+ probe operation[[Listing 3]] +----------------- +include::include/history-guide/nfs-probe-err.typescript[] +----------------- + +<1> NFS server error message. +<2> Warning about a non-existing user id. + +NOTE: Messages logged by resource agents are always tagged with + 'type(ID)' (in <<Listing 3>>: +nfsserver(nfs-server)+). + + + Everything dumped to +stderr/stdout+ (in <<Listing 3>>: + +id: rpcuser: no such user+) is captured and subsequently + logged by +lrmd+. The +stdout+ output is at the 'info' + severity which is by default _not_ logged by pacemaker + since version 1.1.12. + +At the very top we see error message reporting that the +NFS server is running, but some other stuff, apparently +unexpectedly, is not. However, we know that it cannot be +running on the 'c' node as it is already running on the 'a' node. +Not being able to figure out what is going on, we had to turn on +tracing of the resource agent. <<Listing 4>> shows how to do +that. + +[source,ansiclr] +[caption="Listing 4: "] +.Set `nfs-server` probe operation resource tracing[[Listing 4]] +----------------- +include::include/history-guide/resource-trace.typescript[] +----------------- + +Trace of the +nfsserver+ RA revealed that the +nfs-server+ init +script (used internally by the resource agent) _always_ exits +with success for status. That was actually due to the recent port +to systemd and erroneous interpretation of `systemctl status` +semantics: it always exits with success (due to some paradigm +shift, we guess). FYI, `systemctl is-active` should be used +instead and it does report a service status as expected. + +As a bonus, a minor issue about a non-existing user id +rpcuser+ +is also revealed. + +NOTE: Messages in the crm history log output are colored + depending on the originating host. + +The rest of this document gives more details about crmsh history. +If you're more of a just-try-it-out person, enter +crm history+ +and experiment. With +history+ commands you cannot really break +anything (fingers crossed). + +== Introduction to crmsh `history` + +The history crmsh feature, as the name suggests, deals with the +past. It was conceived as a facility to bring to the fore all +trails pacemaker cluster leaves behind which are relevant to a +particular resource, node, or event. It is used in the first +place as a troubleshooting tool, but it can also be helpful in +studying pacemaker clusters. + +To begin, we run the `info` command which gives an overview, as +shown in <<Listing 5>>. + +[source,ansiclr] +[caption="Listing 5: "] +.Basic history information[[Listing 5]] +----------------- +include::include/history-guide/info.typescript[] +----------------- + +The `timeframe` command limits the observed period and helps +focus on the events of interest. Here we wanted to look at the +10 minute period. Two transitions were executed during this time. + +== Transitions + +Transitions are basic units capturing cluster movements +(resource operations and node events). A transition +consists of a set of actions to reach a desired cluster +status as specified in the cluster configuration by the +user. + +Every configuration or status change results in a transition. + +Every transition is also a CIB, which is how cluster +configuration and status are stored. Transitions are saved +to files, the so called PE (Policy Engine) inputs. + +In <<Listing 6>> we show how to display transitions. +The listing is annotated to explain the output in more detail. + + +[source,ansiclr] +[caption="Listing 6: "] +.Viewing transitions[[Listing 6]] +----------------- +include::include/history-guide/basic-transition.typescript[] +----------------- + +<1> The transition command without arguments displays the latest +transition. +<2> Graph of transition actions is provided by `graphviz`. See +<<Image 2>>. +<3> Output of `crm_simulate` with irrelevant stuff edited out. +`crm_simulate` was formerly known as `ptest`. +<4> Transition summary followed by selection of log messages. +History weeds out messages which are of lesser importance. See +<<Listing 8>> if you want to see what history has been hiding +from you here. + +Incidentally, if you wonder why all transitions in these examples +are green, that is not because they were green in any sense of +the color, but just due to that being color of node 'c': as +chance would have it, 'c' was calling shots at the time (being +Designated Coordinator or DC). That is also why all `crmd` and +`pengine` messages are coming from 'c'. + +NOTE: Transitions are the basis of pacemaker operation, make sure +that you understand them. + +What you cannot see in the listing is a graph generated and shown +in a separate window in your X11 display. <<Image 2>> may not be +very involved, but we reckon it's as good a start as starts go. + +[caption="Image 2: "] +.Graph for transition 1907[[Image 2]] +image::/img/history-guide/smallapache-start.png[link="/img/history-guide/smallapache-start.png"] + +It may sometimes be useful to see what changed between two +transitions. History `diff` command is in action in <<Listing 7>>. + +[source,ansiclr] +[caption="Listing 7: "] +.Viewing transitions[[Listing 7]] +----------------- +include::include/history-guide/diff.typescript[] +----------------- + +<1> Configuration diff between two last transitions. Transitions +may be referenced with indexes starting at 0 and going backwards. +<2> Status diff between two last transitions. + +Whereas configuration diff is (hopefully) obvious, status diff +needs some explanation: the status section of the PE inputs +(transitions) always lags behind the configuration. This is +because at the time the transition is saved to a file, the +actions of that transition are yet to be executed. So, the status +section of transition _N_ corresponds to the configuration _N-1_. + +[source,ansiclr] +[caption="Listing 8: "] +.Full transition log[[Listing 8]] +----------------- +include::include/history-guide/transition-log.typescript[] +----------------- + +== Resource and node events + +Apart from transitions, events such as resource start or stop are +what we usually want to examine. In our extremely exciting +example of apache resource restart, the history `resource` +command picks the most interesting resource related messages as +shown in <<Listing 9>>. Again, history shows only the most +important log parts. + +NOTE: If you want to see more detail (which may not always be + recommendable), then use the history `detail` command to + increase the level of detail displayed. + +[source,ansiclr] +[caption="Listing 9: "] +.Resource related messages[[Listing 9]] +----------------- +include::include/history-guide/resource.typescript[] +----------------- + +Node related events are node start and stop (cluster-wise), +node membership changes, and stonith events (aka node fence). +We'll refrain from showing examples of the history `node` +command--it is analogue to the `resource` command. + +== Viewing logs + +History `log` command, unsurprisingly, displays logs. The +messages from various nodes are weaved and shown in different +colors for the sake of easier viewing. Unlike other history +commands, `log` shows all messages captured in the report. If you +find some of them irrelevant they can be filtered out: +the `exclude` command takes extended regular expressions and it +is additive. We usually set the exclude expression to at least +`ssh|systemd|kernel`. Use `exclude clear` to remove all +expressions. And don't forget the `timeframe` command that +imposes a time window on the report. + +== External reports, configurations, and graphs + +The information source history works with is `hb_report` +generated report. Even when examining live cluster, `hb_report` is +run behind the scene to collect the data before presenting it to +the user. Well, at least to generate the first report: there is a +special procedure for log refreshing and collecting new PE +inputs, which runs much faster than creating a report from +scratch. However, juggling with multiple sources, appending logs, +moving time windows, may not always be foolproof, and if +the source gets borked you can always ask for a brand new report +with `refresh force`. + +Analyzing reports from external source is no different from what +we've seen so far. In fact, there's a `source` command which +tells history where to look for data. Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/history-guide/sample-cluster.conf.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/history-guide/sample-cluster.conf.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/history-guide/smallapache-start.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/history-guide/smallapache-start.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/README new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/README --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/README 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/README 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,5 @@ +Replaced the plain DocBook XSL admonition icons with Jimmac's DocBook +icons (http://jimmac.musichall.cz/ikony.php3). I dropped transparency +from the Jimmac icons to get round MS IE and FOP PNG incompatibilies. + +Stuart Rackham Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/1.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/1.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/10.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/10.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/11.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/11.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/12.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/12.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/13.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/13.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/14.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/14.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/15.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/15.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/2.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/2.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/3.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/3.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/4.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/4.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/5.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/5.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/6.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/6.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/7.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/7.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/8.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/8.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/callouts/9.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/callouts/9.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/caution.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/caution.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/example.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/example.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/home.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/home.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/important.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/important.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/next.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/next.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/note.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/note.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/prev.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/prev.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/tip.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/tip.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/up.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/up.png differ Files old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/img/icons/warning.png and new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/img/icons/warning.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/basic-transition.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/basic-transition.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/basic-transition.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/basic-transition.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,22 @@ +[32mcrm(live)history# [0;10mtransition <1> +[36mINFO[0;10m: running ptest with /var/cache/crm/history/live/sle12-c/pengine/pe-input-1907.bz2 +[36mINFO[0;10m: starting dotty to show transition graph <2> +Current cluster status: <3> +Online: [ sle12-a sle12-c ] + s-libvirt (stonith:external/libvirt): Started sle12-c + ... + small-apache (ocf::heartbeat:apache): Stopped +Transition Summary: + * Start small-apache (sle12-a) +Executing cluster transition: + * Resource action: small-apache start on sle12-a +Revised cluster status: +Online: [ sle12-a sle12-c ] + s-libvirt (stonith:external/libvirt): Started sle12-c + ... + small-apache (ocf::heartbeat:apache): Started sle12-a + +Transition sle12-c:pe-input-1907 (20:30:14 - 20:30:15): <4> + total 1 actions: 1 Complete +[32mApr 15 20:30:14 sle12-c crmd[1136]: notice: te_rsc_command: Initiating action 60: start small-apache_start_0 on sle12-a[0;10m +[0;10mApr 15 20:30:14 sle12-a apache(small-apache)[1586]: INFO: AH00558: httpd2: Could not reliably determine the server's fully qualified domain name, using 10.2.12.51. Set the 'ServerName' directive globally to suppress this message[0;10m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/diff.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/diff.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/diff.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/diff.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,11 @@ +[32mcrm(live)history# [0;10mdiff -1 0 <1> +--- -1 ++++ 0 +@@ -11 +11 @@ +-[33mprimitive[0;10m [0;10msmall-apache[0;10m apache [33mparams[0;10m [36mconfigfile[0;10m=[31m"/etc/apache2/small.conf"[0;10m [33mmeta[0;10m [36mtarget-role[0;10m=[31mStopped[0;10m ++[33mprimitive[0;10m [0;10msmall-apache[0;10m apache [33mparams[0;10m [36mconfigfile[0;10m=[31m"/etc/apache2/small.conf"[0;10m [33mmeta[0;10m [36mtarget-role[0;10m=[31mStarted[0;10m +[32mcrm(live)history# [0;10mdiff -1 0 status <2> +--- -1 ++++ 0 +@@ -15 +14,0 @@ +- small-apache (ocf::heartbeat:apache): Started sle12-a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/info.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/info.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/info.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/info.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,16 @@ +# crm history +[32mcrm(live)history# [0;10mtimeframe "Apr 15 20:25" "Apr 15 20:35" +[32mcrm(live)history# [0;10minfo +Source: live +Created on: Thu Apr 16 11:32:36 CEST 2015 +By: report -Z -Q -f Wed Apr 15 20:25:00 2015 -t 2015-04-15 20:35:00 /var/cache/crm/history/live +Period: 2015-04-15 20:25:00 - 2015-04-15 20:35:00 +Nodes: [0;10msle12-a[0;10m [32msle12-c[0;10m +Groups: nfs-srv nfs-disk +Resources: s-libvirt p_drbd_nfs nfs-vg fs1 virtual-ip nfs-server websrv websrv-ip small-apache +Transitions: [32m1906[0;10m [32m1907[0;10m +[32mcrm(live)history# [0;10mpeinputs v +Date Start End Filename Client User Origin +==== ===== === ======== ====== ==== ====== +2015-04-15 20:29:59 20:30:01 [32mpe-input-1906[0;10m no-client no-user no-origin +2015-04-15 20:30:14 20:30:15 [32mpe-input-1907[0;10m no-client no-user no-origin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/nfs-probe-err.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/nfs-probe-err.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/nfs-probe-err.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/nfs-probe-err.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,20 @@ +# crm history resource nfs-server +[36mINFO[0;10m: fetching new logs, please wait ... +[32mDec 16 11:53:23 sle12-c nfsserver(nfs-server)[14911]: <1> ERROR: NFS server is up, but the locking daemons are down[0;10m +[32mDec 16 11:53:23 sle12-c crmd[2823]: notice: te_rsc_command: Initiating action 54: stop nfs-server_stop_0 on sle12-a[0;10m +[32mDec 16 11:53:23 sle12-c crmd[2823]: notice: te_rsc_command: Initiating action 3: stop nfs-server_stop_0 on sle12-c (local)[0;10m +[32mDec 16 11:53:23 sle12-c nfsserver(nfs-server)[14944]: INFO: Stopping NFS server ...[0;10m +[32mDec 16 11:53:23 sle12-c nfsserver(nfs-server)[14944]: INFO: Stopping sm-notify[0;10m +[32mDec 16 11:53:23 sle12-c nfsserver(nfs-server)[14944]: INFO: Stopping rpc.statd[0;10m +[32mDec 16 11:53:23 sle12-c nfsserver(nfs-server)[14944]: INFO: NFS server stopped[0;10m +[32mDec 16 11:53:23 sle12-c crmd[2823]: notice: te_rsc_command: Initiating action 55: start nfs-server_start_0 on sle12-a[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23255]: INFO: Stopping NFS server ...[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23255]: INFO: Stopping sm-notify[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23255]: INFO: Stopping rpc.statd[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23255]: INFO: NFS server stopped[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23320]: INFO: Starting NFS server ...[0;10m +[0;10mDec 16 11:53:23 sle12-a nfsserver(nfs-server)[23320]: INFO: Starting rpc.statd.[0;10m +[0;10mDec 16 11:53:24 sle12-a nfsserver(nfs-server)[23320]: INFO: executing sm-notify[0;10m +[0;10mDec 16 11:53:24 sle12-a nfsserver(nfs-server)[23320]: INFO: NFS server started[0;10m +[0;10mDec 16 11:53:24 sle12-a lrmd[6904]: <2> notice: operation_finished: nfs-server_start_0:23320:stderr [ id: rpcuser: no such user ][0;10m +[0;10mDec 16 11:53:24 sle12-a lrmd[6904]: message repeated 3 times: [ notice: operation_finished: nfs-server_start_0:23320:stderr [ id: rpcuser: no such user ]][0;10m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/resource-trace.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/resource-trace.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/resource-trace.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/resource-trace.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,7 @@ +# crm resource trace nfs-server monitor 0 +[36mINFO[0;10m: Trace for nfs-server:monitor is written to /var/lib/heartbeat/trace_ra/ +[36mINFO[0;10m: Trace set, restart nfs-server to trace non-monitor operations +# crm resource cleanup nfs-server +Cleaning up nfs-server on sle12-a +Cleaning up nfs-server on sle12-c +Waiting for 2 replies from the CRMd.. OK diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/resource.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/resource.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/resource.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/resource.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,6 @@ +[32mcrm(live)history# [0;10mresource small-apache +[32mApr 15 20:29:59 sle12-c crmd[1136]: notice: te_rsc_command: Initiating action 60: stop small-apache_stop_0 on sle12-a[0;10m +[0;10mApr 15 20:29:59 sle12-a apache(small-apache)[1366]: INFO: Attempting graceful stop of apache PID 9155[0;10m +[0;10mApr 15 20:30:01 sle12-a apache(small-apache)[1366]: INFO: apache stopped.[0;10m +[0;10mApr 15 20:30:14 sle12-a apache(small-apache)[1586]: INFO: AH00558: httpd2: Could not reliably determine the server's fully qualified domain name, using 10.2.12.51. Set the 'ServerName' directive globally to suppress this message[0;10m +[32mApr 15 20:30:14 sle12-c crmd[1136]: notice: te_rsc_command: Initiating action 60: start small-apache_start_0 on sle12-a[0;10m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/sample-cluster.conf.crm new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/sample-cluster.conf.crm --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/sample-cluster.conf.crm 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/sample-cluster.conf.crm 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,54 @@ +node 167906357: sle12-c +node 167906355: sle12-a +primitive s-libvirt stonith:external/libvirt \ + params hostlist="sle12-a sle12-c" hypervisor_uri="qemu+ssh://hex-10.suse.de/system?keyfile=/root/.ssh/xen" reset_method=reboot \ + op monitor interval=5m timeout=60s +primitive p_drbd_nfs ocf:linbit:drbd \ + params drbd_resource=nfs \ + op monitor interval=15 role=Master \ + op monitor interval=30 role=Slave \ + op start interval=0 timeout=300 \ + op stop interval=0 timeout=120 +primitive nfs-vg LVM \ + params volgrpname=nfs-vg +primitive fs1 Filesystem \ + params device="/dev/nfs-vg/fs1" directory="/srv/nfs" fstype=ext3 \ + op monitor interval=30s +primitive virtual-ip IPaddr2 \ + params ip=10.2.12.100 +primitive nfs-server nfsserver \ + params nfs_shared_infodir="/srv/nfs/state" nfs_ip=10.2.12.100 \ + op monitor interval=30s +primitive websrv apache \ + params configfile="/etc/apache2/httpd.conf" \ + op monitor interval=30 +primitive websrv-ip IPaddr2 \ + params ip=10.2.12.101 +primitive small-apache apache \ + params configfile="/etc/apache2/small.conf" +group nfs-disk nfs-vg fs1 +group nfs-srv virtual-ip nfs-server +ms ms_drbd_nfs p_drbd_nfs \ + meta notify=true clone-max=2 +location nfs-pref virtual-ip 100: sle12-a +location websrv-pref websrv 100: sle12-c +colocation vg-with-drbd inf: nfs-vg ms_drbd_nfs:Master +colocation c-nfs inf: nfs-srv nfs-disk +colocation c-websrv inf: websrv websrv-ip +colocation small-apache-with-virtual-ip inf: small-apache virtual-ip +# need fs1 for the NFS server +order o-nfs inf: nfs-disk nfs-srv +# websrv serves requests at IP websrv-ip +order o-websrv inf: websrv-ip websrv +# small apache serves requests at IP virtual-ip +order virtual-ip-before-small-apache inf: virtual-ip small-apache +# drbd device is the nfs-vg PV +order drbd-before-nfs-vg inf: ms_drbd_nfs:promote nfs-vg:start +property cib-bootstrap-options: \ + dc-version=1.1.12-ad083a8 \ + cluster-infrastructure=corosync \ + cluster-name=sle12-test3l-public \ + no-quorum-policy=ignore \ + last-lrm-refresh=1429192263 +op_defaults op-options: \ + timeout=120s diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/status-probe-fail.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/status-probe-fail.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/status-probe-fail.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/status-probe-fail.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,15 @@ +# crm status +Last updated: Tue Dec 16 11:57:04 2014 +Last change: Tue Dec 16 11:53:22 2014 +Stack: corosync +Current DC: sle12-c (167906357) - partition with quorum +Version: 1.1.12-ad083a8 +2 Nodes configured +10 Resources configured +Online: [ sle12-a sle12-c ] +[...] + nfs-server (ocf::heartbeat:nfsserver): Started sle12-a +[...] +Failed actions: + nfs-server_monitor_0 on sle12-c 'unknown error' (1): call=298, status=complete, + last-rc-change='Tue Dec 16 11:53:23 2014', queued=0ms, exec=135ms diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/stonith-corosync-stopped.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/stonith-corosync-stopped.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/stonith-corosync-stopped.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/stonith-corosync-stopped.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,8 @@ +# crm history node sle12-c +[36mINFO[0;10m: fetching new logs, please wait ... +[32mDec 19 14:36:18 sle12-c corosync[29551]: [MAIN ] Corosync Cluster Engine ('2.3.3'): started and ready to provide service.[0;10m +[32mDec 19 14:36:19 sle12-c corosync[29545]: Starting Corosync Cluster Engine (corosync): [ OK ][0;10m +[0;10mDec 19 14:36:20 sle12-a pengine[6906]: warning: pe_fence_node: Node sle12-c will be fenced because our peer process is no longer available[0;10m +[0;10mDec 19 14:36:20 sle12-a pengine[6906]: warning: stage6: Scheduling Node sle12-c for STONITH[0;10m +[0;10mDec 19 14:36:20 sle12-a crmd[6907]: notice: te_fence_node: Executing reboot fencing operation (65) on sle12-c (timeout=60000)[0;10m +[0;10mDec 19 14:36:20 sle12-a crmd[6907]: notice: peer_update_callback: Node return implies stonith of sle12-c (action 65) completed[0;10m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/transition-log.typescript new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/transition-log.typescript --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/include/history-guide/transition-log.typescript 1970-01-01 01:00:00.000000000 +0100 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/include/history-guide/transition-log.typescript 2015-05-13 15:11:43.000000000 +0200 @@ -0,0 +1,13 @@ +[32mcrm(live)history# [0;10mtransition log +[36mINFO[0;10m: retrieving information from cluster nodes, please wait ... +[32mApr 15 20:30:14 sle12-c crmd[1136]: notice: do_state_transition: State transition S_IDLE -> S_POLICY_ENGINE [ input=I_PE_CALC cause=C_FSA_INTERNAL origin=abort_transition_graph ][0;10m +[32mApr 15 20:30:14 sle12-c stonithd[1132]: notice: unpack_config: On loss of CCM Quorum: Ignore[0;10m +[32mApr 15 20:30:14 sle12-c pengine[1135]: notice: unpack_config: On loss of CCM Quorum: Ignore[0;10m +[32mApr 15 20:30:14 sle12-c pengine[1135]: notice: LogActions: Start small-apache#011(sle12-a)[0;10m +[32mApr 15 20:30:14 sle12-c crmd[1136]: notice: do_te_invoke: Processing graph 123 (ref=pe_calc-dc-1429122614-234) derived from /var/lib/pacemaker/pengine/pe-input-1907.bz2[0;10m +[32mApr 15 20:30:14 sle12-c crmd[1136]: notice: te_rsc_command: Initiating action 60: start small-apache_start_0 on sle12-a[0;10m +[32mApr 15 20:30:14 sle12-c pengine[1135]: notice: process_pe_message: Calculated Transition 123: /var/lib/pacemaker/pengine/pe-input-1907.bz2[0;10m +[0;10mApr 15 20:30:14 sle12-a stonithd[1160]: notice: unpack_config: On loss of CCM Quorum: Ignore[0;10m +[0;10mApr 15 20:30:14 sle12-a apache(small-apache)[1586]: INFO: AH00558: httpd2: Could not reliably determine the server's fully qualified domain name, using 10.2.12.51. Set the 'ServerName' directive globally to suppress this message[0;10m +[0;10mApr 15 20:30:14 sle12-a crmd[1164]: notice: process_lrm_event: Operation small-apache_start_0: ok (node=sle12-a, call=69, rc=0, cib-update=48, confirmed=true)[0;10m +[32mApr 15 20:30:15 sle12-c crmd[1136]: notice: run_graph: Transition 123 (Complete=1, Pending=0, Fired=0, Skipped=0, Incomplete=0, Source=/var/lib/pacemaker/pengine/pe-input-1907.bz2): Complete[0;10m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/make-news.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/make-news.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/doc/website-v1/make-news.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/doc/website-v1/make-news.py 2015-05-13 15:11:43.000000000 +0200 @@ -70,8 +70,7 @@ def date_obj(self): from dateutil import parser - return (parser.parse(self.date) - - datetime.datetime(1970, 1, 1)).total_seconds() + return (parser.parse(self.date)) def atom_content(self): return escape('<pre>\n' + self.content + '\n</pre>\n') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/hb_report/utillib.sh new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/hb_report/utillib.sh --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/hb_report/utillib.sh 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/hb_report/utillib.sh 2015-05-13 15:11:43.000000000 +0200 @@ -387,6 +387,10 @@ local pkg debug "get debuginfo packages using zypper: $@" zypper -qn ref > /dev/null + # use --ignore-unknown if available, much faster + # (2 is zypper exit code for syntax/usage) + zypper -qn --ignore-unknown install -C $@ >/dev/null + [ $? -ne 2 ] && return for pkg in $@; do zypper -qn install -C $pkg >/dev/null done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/config.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/config.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/config.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/config.py 2015-05-13 15:11:43.000000000 +0200 @@ -158,9 +158,8 @@ class opt_dir(object): def __init__(self, path): - self.default = '' - self.completions = [] self.default = make_path(path) + self.completions = [] def validate(self, val): if not os.path.isdir(val): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/corosync.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/corosync.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/corosync.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/corosync.py 2015-05-13 15:11:43.000000000 +0200 @@ -293,26 +293,7 @@ ''' Push the local configuration to the list of remote nodes ''' - try: - import parallax - except ImportError: - raise ValueError("parallax is required to push") - - local_path = conf() - - opts = parallax.Options() - opts.timeout = 60 - opts.ssh_options += ['ControlPersist=no'] - ok = True - for host, result in parallax.copy(nodes, - local_path, - local_path, opts).iteritems(): - if isinstance(result, parallax.Error): - err_buf.error("Failed to push configuration to %s: %s" % (host, result)) - ok = False - else: - err_buf.ok(host) - return ok + return utils.cluster_copy_file(conf(), nodes) def pull_configuration(from_node): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/pacemaker.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/pacemaker.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/pacemaker.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/pacemaker.py 2015-05-13 15:11:43.000000000 +0200 @@ -44,13 +44,10 @@ def read_schema_local(validate_name, file_path): try: - f = open(file_path) - schema = f.read() + with open(file_path) as f: + return f.read() except IOError, msg: - raise PacemakerError("Cannot read the schema file: " + str(msg)) - - f.close() - return schema + raise PacemakerError("Cannot read schema file '%s': %s" % (file_path, msg)) def delete_dir(dir_path): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/schema.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/schema.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/schema.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/schema.py 2015-05-13 15:11:43.000000000 +0200 @@ -106,7 +106,10 @@ def init_schema(cib): global _crm_schema - _crm_schema = _load_schema(cib) + try: + _crm_schema = _load_schema(cib) + except PacemakerError, msg: + common_err(msg) reset() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/ui_cluster.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/ui_cluster.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/ui_cluster.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/ui_cluster.py 2015-05-13 15:11:43.000000000 +0200 @@ -213,6 +213,14 @@ else: err_buf.ok("[%s]\n%s" % (host, result[1])) + def do_copy(self, context, local_file, *nodes): + ''' + usage: copy <filename> [nodes ...] + Copy file to other cluster nodes. + If given no nodes as arguments, copy to all other cluster nodes. + ''' + return utils.cluster_copy_file(local_file, nodes) + def do_diff(self, context, filename, *nodes): "usage: diff <filename> [--checksum] [nodes...]. Diff file across cluster." this_node = utils.this_node() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/ui_configure.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/ui_configure.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/ui_configure.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/ui_configure.py 2015-05-13 15:11:43.000000000 +0200 @@ -526,11 +526,11 @@ def do_delete(self, context, *args): "usage: delete [-f|--force] <id> [<id>...]" argl = list(args) - arg_force = argl and argl[0] == '--force' - if arg_force: - del argl[0] + arg_force = any((x in ('-f', '--force')) for x in argl) + argl = [x for x in argl if (x not in ('-f', '--force'))] if arg_force or config.core.force: self._stop_if_running(argl) + utils.wait4dc(what="Stopping %s" % (", ".join(argl))) return cib_factory.delete(*argl) @command.name('default-timeouts') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/utils.py new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/utils.py --- old/crmsh-2.2.0~rc2+git.1429973374.667891c/modules/utils.py 2015-04-26 12:46:49.000000000 +0200 +++ new/crmsh-2.2.0~rc2+git.1431438882.ae4b493/modules/utils.py 2015-05-13 15:11:43.000000000 +0200 @@ -1447,4 +1447,30 @@ print "%-16s: %s" % (host, hashlib.sha1(open(path).read()).hexdigest()) +def cluster_copy_file(local_path, nodes=None): + """ + Copies given file to all other cluster nodes. + """ + try: + import parallax + except ImportError: + raise ValueError("parallax is required to copy cluster files") + if not nodes: + nodes = list_cluster_nodes() + nodes.remove(this_node()) + opts = parallax.Options() + opts.timeout = 60 + opts.ssh_options += ['ControlPersist=no'] + ok = True + for host, result in parallax.copy(nodes, + local_path, + local_path, opts).iteritems(): + if isinstance(result, parallax.Error): + err_buf.error("Failed to push %s to %s: %s" % (local_path, host, result)) + ok = False + else: + err_buf.ok(host) + return ok + + # vim:ts=4:sw=4:et:
