Hello community,

here is the log from the commit of package crmsh for openSUSE:Factory checked 
in at 2016-10-26 13:29:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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      2016-10-10 
16:21:09.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.crmsh.new/crmsh.changes 2016-10-26 
13:29:21.000000000 +0200
@@ -1,0 +2,9 @@
+Tue Oct 25 11:46:42 UTC 2016 - kgronl...@suse.com
+
+- Update to version 2.3.1+git.1477204932.7939b51:
+  * medium: corosync: Fix missing variable in del-node
+  * low: crm_pssh: Fix nodenum envvar name
+  * low: cmd_status: More detail in verify output
+  * doc: Fix inverted boolean in resource set documentation
+
+-------------------------------------------------------------------

Old:
----
  crmsh-2.3.1+git.1475245522.4172084.tar.bz2

New:
----
  crmsh-2.3.1+git.1477204932.7939b51.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ crmsh.spec ++++++
--- /var/tmp/diff_new_pack.akL8xE/_old  2016-10-26 13:29:23.000000000 +0200
+++ /var/tmp/diff_new_pack.akL8xE/_new  2016-10-26 13:29:23.000000000 +0200
@@ -36,7 +36,7 @@
 Summary:        High Availability cluster command-line interface
 License:        GPL-2.0+
 Group:          %{pkg_group}
-Version:        2.3.1+git.1475245522.4172084
+Version:        2.3.1+git.1477204932.7939b51
 Release:        0
 Url:            http://crmsh.github.io
 Source0:        %{name}-%{version}.tar.bz2

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.akL8xE/_old  2016-10-26 13:29:23.000000000 +0200
+++ /var/tmp/diff_new_pack.akL8xE/_new  2016-10-26 13:29:23.000000000 +0200
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
             <param name="url">git://github.com/ClusterLabs/crmsh.git</param>
-          <param 
name="changesrevision">41720845429e9a42d4273d70a6be5cc31e324849</param></service></servicedata>
\ No newline at end of file
+          <param 
name="changesrevision">d796a3b07ad5d1bd1637638bd1100175d066d24e</param></service></servicedata>
\ No newline at end of file

++++++ crmsh-2.3.1+git.1475245522.4172084.tar.bz2 -> 
crmsh-2.3.1+git.1477204932.7939b51.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/.travis.yml 
new/crmsh-2.3.1+git.1477204932.7939b51/.travis.yml
--- old/crmsh-2.3.1+git.1475245522.4172084/.travis.yml  2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/.travis.yml  2016-10-23 
08:42:12.000000000 +0200
@@ -1,15 +1,29 @@
 ---
-sudo: false
+sudo: required
+dist: trusty
 language: python
 python:
-  - 2.6
-  - 2.7
+  - "2.6"
+  - "2.7_with_system_site_packages"
+
+before_install:
+  - sudo add-apt-repository ppa:syseleven-platform/linux-ha -y
+  - sudo apt-get -qq update
+  - sudo apt-get install -y pacemaker libcluster-glue-dev automake autoconf 
python-lxml python-dateutil python-setuptools python-yaml asciidoc pkg-config
+  - sudo dpkg -r --force-depends crmsh
 
 install:
   - pip install tox-travis
 
 script:
   - tox
+  - test/travis-tests.sh
+
+after_failure:
+  - sudo cat $TRAVIS_BUILD_DIR/crmtestout/regression.out 
$TRAVIS_BUILD_DIR/crmtestout/crm.* /etc/apt/sources.list
+  - lsb_release -a
+  - whoami
+  - printenv | sort
 
 notifications:
   irc:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/crmsh/cmd_status.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/cmd_status.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/cmd_status.py  2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/cmd_status.py  2016-10-23 
08:42:12.000000000 +0200
@@ -127,9 +127,9 @@
     '''
     from . import config
     if "ptest" in config.core.ptest:
-        cmd1 = "crm_verify -LV; %s -L -VVVV" % (config.core.ptest)
+        cmd1 = "crm_verify -LVVV; %s -L -VVVV" % (config.core.ptest)
     else:
-        cmd1 = "crm_verify -LV; %s -LjV" % (config.core.ptest)
+        cmd1 = "crm_verify -LVVV; %s -LjV" % (config.core.ptest)
 
         if "scores" in args:
             cmd1 += " -s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/corosync.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/corosync.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/corosync.py    2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/corosync.py    2016-10-23 
08:42:12.000000000 +0200
@@ -444,6 +444,7 @@
     if nth == -1:
         return
 
+    num_nodes = p.count('nodelist.node')
     p.set('quorum.two_node', '1' if num_nodes == 2 else '0')
 
     f = open(conf(), 'w')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/crm_pssh.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/crm_pssh.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/crm_pssh.py    2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/crm_pssh.py    2016-10-23 
08:42:12.000000000 +0200
@@ -83,7 +83,7 @@
     for host, cmdline in l:
         cmd = ['ssh', host,
                '-o', 'PasswordAuthentication=no',
-               '-o', 'SendEnv=PSSH_NODENUM',
+               '-o', 'SendEnv=PARALLAX_NODENUM',
                '-o', 'StrictHostKeyChecking=no']
         if hasattr(opts, 'options'):
             for opt in opts.options:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/history.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/history.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/history.py     2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/history.py     2016-10-23 
08:42:12.000000000 +0200
@@ -50,6 +50,7 @@
         return m.group(1)
     return "-1"
 
+
 def pe_file_in_range(pe_f, a):
     if not a:
         return pe_f
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/msg.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/msg.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/msg.py 2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/msg.py 2016-10-23 
08:42:12.000000000 +0200
@@ -2,7 +2,6 @@
 # See COPYING for license information.
 
 import sys
-from lxml import etree
 from . import config
 from . import clidisplay
 from . import options
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/crmsh/ui_history.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/ui_history.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/ui_history.py  2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/ui_history.py  2016-10-23 
08:42:12.000000000 +0200
@@ -434,53 +434,36 @@
         self._reset_cib_env()
         return s
 
-    def _worddiff(self, s1, s2):
-        s = None
-        f1 = utils.str2tmp(s1)
-        f2 = utils.str2tmp(s2)
-        if f1 and f2:
-            _, s = utils.get_stdout("wdiff %s %s" % (f1, f2))
-        for f in (f1, f2):
-            try:
-                os.unlink(f)
-            except:
-                pass
-        return s
-
-    def _unidiff(self, s1, s2, t1, t2):
-        s = None
-        f1 = utils.str2tmp(s1)
-        f2 = utils.str2tmp(s2)
-        if f1 and f2:
-            _, s = utils.get_stdout("diff -U 0 -d -b --label %s --label %s %s 
%s" %
-                                     (t1, t2, f1, f2))
-
-        for f in (f1, f2):
+    def _diff(self, pe_fun, t1, t2, html=False, wdiff=False):
+        def _diff_impl(s1, s2, cmd):
+            s = None
+            f1 = utils.str2tmp(s1)
+            f2 = utils.str2tmp(s2)
             try:
-                os.unlink(f)
-            except:
-                pass
-        return s
+                if f1 and f2:
+                    _, s = utils.get_stdout(cmd.format(f1=f1, f2=f2))
+            finally:
+                for f in (f1, f2):
+                    try:
+                        os.unlink(f)
+                    except os.error:
+                        pass
+            return s
+
+        def _diffhtml(s1, s2, t1, t2):
+            import difflib
+            return 
''.join(difflib.HtmlDiff(wrapcolumn=60).make_table(s1.split('\n'), 
s2.split('\n'), t1, t2))
 
-    def _diffhtml(self, s1, s2, t1, t2):
-        import difflib
-        fromlines = s1.split('\n')
-        tolines = s2.split('\n')
-        diff_l = difflib.HtmlDiff(wrapcolumn=60).make_table(
-            fromlines, tolines, t1, t2)
-        return ''.join(diff_l)
-
-    def _diff(self, pe_fun, t1, t2, html=False, wdiff=False):
         s1 = self._render_pe(pe_fun, t1)
         s2 = self._render_pe(pe_fun, t2)
         if not s1 or not s2:
             return None
         if html:
-            s = self._diffhtml(s1, s2, t1, t2)
+            s = _diffhtml(s1, s2, t1, t2)
         elif wdiff:
-            s = self._worddiff(s1, s2)
+            s = _diff_impl(s1, s2, "wdiff {f1} {f2}")
         else:
-            s = self._unidiff(s1, s2, t1, t2)
+            s = _diff_impl(s1, s2, "diff -U 0 -d -b --label %s --label %s {f1} 
{f2}" % (t1, t2))
         return s
 
     def _common_pe_render_check(self, context, opt_l, *args):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/utils.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/utils.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/utils.py       2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/utils.py       2016-10-23 
08:42:12.000000000 +0200
@@ -10,6 +10,7 @@
 import time
 import datetime
 import shutil
+import shlex
 import bz2
 import fnmatch
 import gc
@@ -25,6 +26,7 @@
 def memoize(function):
     "Decorator to invoke a function once only for any argument"
     memoized = {}
+
     def inner(*args):
         if args in memoized:
             return memoized[args]
@@ -53,6 +55,32 @@
     return os.uname()[1]
 
 
+def network_defaults(interface=None):
+    """
+    returns (interface, ip-address, network, prefix-length)
+    """
+    def valfor(l, key):
+        for i in range(0, len(l) - 1):
+            if l[i] == key:
+                return l[i + 1]
+        return None
+    _, outp = get_stdout("/sbin/ip -o route show")
+    info = [None, None, None, None]
+    if interface is not None:
+        info[0] = interface
+    for l in outp.splitlines():
+        sp = l.split()
+        if info[0] is None and len(sp) >= 5 and sp[0] == 'default' and sp[1] 
== 'via':
+            info[0] = sp[4]
+        if info[0] is not None:
+            if sp[0].find('/') >= 0 and valfor(sp, 'dev') == info[0]:
+                nw, length = sp[0].split('/')
+                info[1], info[2], info[3] = valfor(sp, 'src'), nw, length
+    if info[0] is None:
+        raise ValueError("Failed to determine default network interface")
+    return tuple(info)
+
+
 _cib_shadow = 'CIB_shadow'
 _cib_in_use = ''
 
@@ -245,6 +273,20 @@
     return cmd
 
 
+def chown(path, user, group):
+    if isinstance(user, int):
+        uid = user
+    else:
+        import pwd
+        uid = pwd.getpwnam(user).pw_uid
+    if isinstance(group, int):
+        gid = group
+    else:
+        import grp
+        gid = grp.getgrnam(group).gr_gid
+    os.chown(path, uid, gid)
+
+
 def ensure_sudo_readable(f):
     # make sure the tempfile is readable to crm_diff (bsc#999683)
     if config.core.user:
@@ -327,17 +369,77 @@
     return tmp
 
 
+@contextmanager
+def create_tempfile(suffix='', dir=None):
+    """ Context for temporary file.
+
+    Will find a free temporary filename upon entering
+    and will try to delete the file on leaving, even in case of an exception.
+
+    Parameters
+    ----------
+    suffix : string
+        optional file suffix
+    dir : string
+        optional directory to save temporary file in
+
+    (from http://stackoverflow.com/a/29491523)
+    """
+    import tempfile
+    tf = tempfile.NamedTemporaryFile(delete=False, suffix=suffix, dir=dir)
+    tf.file.close()
+    try:
+        yield tf.name
+    finally:
+        try:
+            os.remove(tf.name)
+        except OSError as e:
+            if e.errno == 2:
+                pass
+            else:
+                raise
+
+
+@contextmanager
+def open_atomic(filepath, mode="r", buffering=-1, fsync=False):
+    """ Open temporary file object that atomically moves to destination upon
+    exiting.
+
+    Allows reading and writing to and from the same filename.
+
+    The file will not be moved to destination in case of an exception.
+
+    Parameters
+    ----------
+    filepath : string
+        the file path to be opened
+    fsync : bool
+        whether to force write the file to disk
+
+    (from http://stackoverflow.com/a/29491523)
+    """
+
+    with create_tempfile(dir=os.path.dirname(os.path.abspath(filepath))) as 
tmppath:
+        with open(tmppath, mode, buffering) as file:
+            try:
+                yield file
+            finally:
+                if fsync:
+                    file.flush()
+                    os.fsync(file.fileno())
+        os.rename(tmppath, filepath)
+
+
 def str2file(s, fname):
     '''
     Write a string to a file.
     '''
     try:
-        f = open(fname, "w")
+        with open_atomic(fname, 'w') as dst:
+            dst.write(s)
     except IOError, msg:
         common_err(msg)
         return False
-    f.write(s)
-    f.close()
     return True
 
 
@@ -509,7 +611,7 @@
                 return True
             except OSError, (errno, strerror):
                 if errno != os.errno.EEXIST:
-                    common_err("Failed to acquire lock to %s: %s" %(lockdir, 
strerror))
+                    common_err("Failed to acquire lock to %s: %s" % (lockdir, 
strerror))
                     return False
                 time.sleep(0.1)
                 continue
@@ -524,6 +626,12 @@
             rmdir_r(os.path.join(lockdir, _LOCKDIR))
 
 
+def mkdirp(d, mode=0777):
+    if os.path.isdir(d):
+        return True
+    os.makedirs(d, mode=mode)
+
+
 def pipe_cmd_nosudo(cmd):
     if options.regression_tests:
         print ".EXT", cmd
@@ -962,6 +1070,7 @@
     else:
         pipe_string(get_pager_cmd(), term_render("".join(g)))
 
+
 def page_file(filename):
     'Open file in pager'
     if not os.path.isfile(filename):
@@ -1360,6 +1469,17 @@
     return "'" + s.replace("'", "'\"'\"'") + "'"
 
 
+def doublequote(s):
+    """Return a shell-escaped version of the string *s*."""
+    if not s:
+        return '""'
+    if _find_unsafe(s) is None:
+        return s
+
+    # use double quotes
+    return '"' + s.replace('"', "\\\"") + '"'
+
+
 def fetch_opts(args, opt_l):
     '''
     Get and remove option keywords from args.
@@ -1515,6 +1635,61 @@
     return _NOQUOTES_RE.match(v) is not None
 
 
+def unquote(s):
+    """
+    Reverse shell-quoting a string, so the string '"a b c"'
+    becomes 'a b c'
+    """
+    sp = shlex.split(s)
+    if len(sp) > 0:
+        return sp[0]
+    return ""
+
+
+def parse_sysconfig(sysconfig_file):
+    """
+    Reads a sysconfig file into a dict
+    """
+    ret = {}
+    vre = re.compile(r"(\S+)\s*=\s*(.*)")
+    if os.path.isfile(sysconfig_file):
+        for line in open(sysconfig_file).readlines():
+            if line.lstrip().startswith('#'):
+                continue
+            m = vre.match(line)
+            if m:
+                ret[m.group(1)] = unquote(m.group(2))
+    return ret
+
+
+def sysconfig_set(sysconfig_file, **values):
+    """
+    Set the values in the sysconfig file, updating the variables
+    if they exist already, appending them if not.
+    """
+    vre = re.compile(r"(\S+)\s*=\s*(.*)")
+    outp = ""
+    if os.path.isfile(sysconfig_file):
+        for line in open(sysconfig_file).readlines():
+            if line.lstrip().startswith('#'):
+                outp += line
+            else:
+                matched = False
+                m = vre.match(line)
+                if m:
+                    for k, v in values.iteritems():
+                        if k == m.group(1):
+                            matched = True
+                            outp += '%s=%s\n' % (k, doublequote(v))
+                            del values[k]
+                            break
+                if not matched:
+                    outp += line
+    for k, v in values.iteritems():
+        outp += '%s = %s\n' % (k, doublequote(v))
+    str2file(outp, sysconfig_file)
+
+
 def remote_diff_slurp(nodes, filename):
     try:
         import parallax
@@ -1611,6 +1786,7 @@
 # should be obscured as a sequence of **** when printed
 _obscured_nvpairs = []
 
+
 def obscured(key, value):
     if key is not None and value is not None:
         for o in _obscured_nvpairs:
@@ -1618,6 +1794,7 @@
                 return '*' * 6
     return value
 
+
 @contextmanager
 def obscure(obscure_list):
     global _obscured_nvpairs
@@ -1629,5 +1806,4 @@
         _obscured_nvpairs = prev
 
 
-
 # vim:ts=4:sw=4:et:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/crmsh/xmlutil.py 
new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/xmlutil.py
--- old/crmsh-2.3.1+git.1475245522.4172084/crmsh/xmlutil.py     2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/crmsh/xmlutil.py     2016-10-23 
08:42:12.000000000 +0200
@@ -15,7 +15,6 @@
 from . import constants
 from .msg import common_err, common_error, common_warn, common_debug, 
cib_parse_err, err_buf
 from . import userdir
-from . import utils
 from .utils import add_sudo, str2file, str2tmp, get_boolean
 from .utils import get_stdout, stdout2list, crm_msec, crm_time_cmp
 from .utils import olist, get_cib_in_use, get_tempdir
@@ -666,11 +665,11 @@
 
 def sanitize_cib(doc):
     xml_processnodes(doc, is_status_node, rmnodes)
-    #xml_processnodes(doc, true, printid)
-    #xml_processnodes(doc, is_emptynvpairs, rmnodes)
-    #xml_processnodes(doc, is_emptyops, rmnodes)
+    # xml_processnodes(doc, true, printid)
+    # xml_processnodes(doc, is_emptynvpairs, rmnodes)
+    # xml_processnodes(doc, is_emptyops, rmnodes)
     xml_processnodes(doc, is_entity, rmnodes)
-    #xml_processnodes(doc, is_comment, rmnodes)
+    # xml_processnodes(doc, is_comment, rmnodes)
     xml_processnodes(doc, is_container, sort_container_children)
     xml_processnodes(doc, true, remove_dflt_attrs)
     xml_processnodes(doc, true, remove_text)
@@ -858,25 +857,29 @@
 
     TODO: if sort_elements is disabled, only sort to resolve 
inter-dependencies.
     '''
-    if config.core.sort_elements:
-        sortfn = lambda k: (_sort_xml_order.get(k.tag, _SORT_LAST), 
k.get('id'))
-    else:
-        sortfn = lambda k: _sort_xml_order.get(k.tag, _SORT_LAST)
-    return sorted(nl, key=sortfn)
+    def sort_elements(k):
+        return _sort_xml_order.get(k.tag, _SORT_LAST), k.get('id')
+
+    def sort_type(k):
+        return _sort_xml_order.get(k.tag, _SORT_LAST)
+
+    return sorted(nl, key=sort_elements if config.core.sort_elements else 
sort_type)
 
 
-def processing_sort_cli(cl):
+def processing_sort_cli(nl):
     '''
-    cl: list of objects (CibObject)
+    nl: list of objects (CibObject)
     Returns the given list in order
 
     TODO: if sort_elements is disabled, only sort to resolve 
inter-dependencies.
     '''
-    if config.core.sort_elements:
-        sortfn = lambda k: (_sort_cli_order.get(k.obj_type, _SORT_LAST), 
k.obj_id)
-    else:
-        sortfn = lambda k: _sort_cli_order.get(k.obj_type, _SORT_LAST)
-    return sorted(cl, key=sortfn)
+    def sort_elements(k):
+        return _sort_cli_order.get(k.obj_type, _SORT_LAST), k.obj_id
+
+    def sort_type(k):
+        return _sort_cli_order.get(k.obj_type, _SORT_LAST)
+
+    return sorted(nl, key=sort_elements if config.core.sort_elements else 
sort_type)
 
 
 def is_resource_cli(s):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/data-manifest 
new/crmsh-2.3.1+git.1477204932.7939b51/data-manifest
--- old/crmsh-2.3.1+git.1475245522.4172084/data-manifest        2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/data-manifest        2016-10-23 
08:42:12.000000000 +0200
@@ -127,6 +127,8 @@
 test/testcases/shadow
 test/testcases/shadow.exp
 test/testcases/xmlonly.sh
+test/travis-expected-pacemaker-1.1.12.patch
+test/travis-tests.sh
 test/unittests/bug-862577_corosync.conf
 test/unittests/corosync.conf.1
 test/unittests/corosync.conf.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/doc/crm.8.adoc 
new/crmsh-2.3.1+git.1477204932.7939b51/doc/crm.8.adoc
--- old/crmsh-2.3.1+git.1475245522.4172084/doc/crm.8.adoc       2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/doc/crm.8.adoc       2016-10-23 
08:42:12.000000000 +0200
@@ -663,7 +663,7 @@
 +sequential+ and +require-all+.
 
 +sequential+::
-  If true, the resources in the set do not depend on each other
+  If false, the resources in the set do not depend on each other
   internally. Setting +sequential+ to +true+ implies a strict order of
   dependency within the set.
 
@@ -785,7 +785,7 @@
 priority. The parameter list with the highest priority is applied
 first, but only if the rule expressions for that parameter list all
 apply. In this case, the rule `#uname eq node1` limits the parameter
-list so that it is only applied on `node1.
+list so that it is only applied on `node1`.
 
 Note that rule expressions are not terminated and are immediately
 followed by the data to which the rule is applied. In this case, the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/setup.py 
new/crmsh-2.3.1+git.1477204932.7939b51/setup.py
--- old/crmsh-2.3.1+git.1475245522.4172084/setup.py     2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/setup.py     2016-10-23 
08:42:12.000000000 +0200
@@ -13,4 +13,4 @@
       install_requires=['parallax', 'lxml', 'PyYAML', 'python-dateutil'],
       scripts=['crm'],
       data_files=[('/usr/share/crmsh', ['doc/crm.8.adoc'])],
-      include_package_data = True)
+      include_package_data=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/crmsh-2.3.1+git.1475245522.4172084/test/evaltest.sh 
new/crmsh-2.3.1+git.1477204932.7939b51/test/evaltest.sh
--- old/crmsh-2.3.1+git.1475245522.4172084/test/evaltest.sh     2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/test/evaltest.sh     2016-10-23 
08:42:12.000000000 +0200
@@ -3,7 +3,7 @@
 # See COPYING for license information.
 
 : ${TESTDIR:=testcases}
-: ${CRM:=/usr/sbin/crm}
+: ${CRM:=crm}
 CRM_NO_REG="$CRM"
 CRM="$CRM -R"
 export PYTHONUNBUFFERED=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/test/regression.sh 
new/crmsh-2.3.1+git.1477204932.7939b51/test/regression.sh
--- old/crmsh-2.3.1+git.1475245522.4172084/test/regression.sh   2016-09-30 
16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/test/regression.sh   2016-10-23 
08:42:12.000000000 +0200
@@ -195,6 +195,6 @@
 then
        echo "seems like some tests failed or else something not expected"
        echo "check $OUTF and diff files in $OUTDIR"
-       echo "in case you wonder what lrmd was doing, read $CRM_LOGF and 
$CRM_DEBUGF"
+       echo "in case you wonder what lrmd was doing, read $(abspath $CRM_LOGF) 
and $(abspath $CRM_DEBUGF)"
        exit 1
 fi >&3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/test/testcases/history.excl 
new/crmsh-2.3.1+git.1477204932.7939b51/test/testcases/history.excl
--- old/crmsh-2.3.1+git.1475245522.4172084/test/testcases/history.excl  
2016-09-30 16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/test/testcases/history.excl  
2016-10-23 08:42:12.000000000 +0200
@@ -1 +1,3 @@
 ^ptest.*:
+^\.EXT tar -C ['][^']+['] -cj -f ['][^']+['] _crmsh_regtest
+^Report saved in ['][^']+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/test/testcases/history.exp 
new/crmsh-2.3.1+git.1477204932.7939b51/test/testcases/history.exp
--- old/crmsh-2.3.1+git.1475245522.4172084/test/testcases/history.exp   
2016-09-30 16:25:22.000000000 +0200
+++ new/crmsh-2.3.1+git.1477204932.7939b51/test/testcases/history.exp   
2016-10-23 08:42:12.000000000 +0200
@@ -379,8 +379,6 @@
 .INP: session
 current session: _crmsh_regtest
 .INP: session pack
-.EXT tar -C '/var/cache/crm/history-root/session/_crmsh_regtest/..' -cj -f 
'/root/_crmsh_regtest.tar.bz2' _crmsh_regtest
-Report saved in '/root/_crmsh_regtest.tar.bz2'
 .TRY History 2
 .INP: history
 .INP: session load _crmsh_regtest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/test/travis-expected-pacemaker-1.1.12.patch
 
new/crmsh-2.3.1+git.1477204932.7939b51/test/travis-expected-pacemaker-1.1.12.patch
--- 
old/crmsh-2.3.1+git.1475245522.4172084/test/travis-expected-pacemaker-1.1.12.patch
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/crmsh-2.3.1+git.1477204932.7939b51/test/travis-expected-pacemaker-1.1.12.patch
  2016-10-23 08:42:12.000000000 +0200
@@ -0,0 +1,93 @@
+--- a/test/testcases/edit.exp  2016-10-20 22:50:33.744542999 +0000
++++ b/test/testcases/edit.exp  2016-10-20 22:50:39.591102718 +0000
+@@ -83,3 +83,6 @@
+ ERROR: 46: g1 refers to missing object nosuch
+-.INP: filter "sed 's/^/# this is a comment\n/'" loc-d1
++.INP: filter "sed 's/^/# this is a comment
++ERROR: 47: configure.modgroup: No closing quotation
++.INP: /'" loc-d1
++ERROR: 48: configure.modgroup: No closing quotation
+ .INP: rsc_defaults $id="rsc_options" failure-timeout=10m
+--- a/test/testcases/resource.exp      2016-10-20 22:50:33.768542999 +0000
++++ b/test/testcases/resource.exp      2016-10-20 22:51:02.357001702 +0000
+@@ -136,4 +136,2 @@
+ .EXT crm_resource -r 'p0' -p 'a0' -v '1 2 3'
+-
+-Set 'p0' option: id=p0-instance_attributes-a0 set=p0-instance_attributes 
name=a0=1 2 3
+ .INP: configure
+@@ -181,3 +179,3 @@
+ .EXT crm_resource -r 'p0' -d 'a0'
+-Deleted 'p0' option: id=p0-instance_attributes-a0 name=a0
++Deleted p0 option: id=p0-instance_attributes-a0 name=a0
+ .INP: configure
+@@ -201,4 +199,2 @@
+ .EXT crm_resource --meta -r 'p0' -p 'm0' -v '123'
+-
+-Set 'p0' option: id=p0-meta_attributes-m0 set=p0-meta_attributes name=m0=123
+ .INP: configure
+@@ -248,3 +244,3 @@
+ .EXT crm_resource --meta -r 'p0' -d 'm0'
+-Deleted 'p0' option: id=p0-meta_attributes-m0 name=m0
++Deleted p0 option: id=p0-meta_attributes-m0 name=m0
+ .INP: configure
+@@ -922,3 +918,2 @@
+ .EXT crm_simulate -sUL
+-3 of 6 resources DISABLED and 0 BLOCKED from being started due to failures
+ 
+@@ -932,3 +927,3 @@
+      Stopped: [ node1 ]
+- p3   (ocf::heartbeat:Dummy): Stopped ( disabled ) 
++ p3   (ocf::heartbeat:Dummy): Stopped 
+  Master/Slave Set: msg [g]
+--- a/test/testcases/ra.exp    2016-10-20 22:50:33.764542999 +0000
++++ b/test/testcases/ra.exp    2016-10-20 22:51:07.084514246 +0000
+@@ -24,8 +24,5 @@
+ 
+-state (string, [/var/run/Dummy-Dummy.state]): State file
++state (string, [/var/run//Dummy-{OCF_RESOURCE_INSTANCE}.state]): State file
+     Location to store the resource state in.
+ 
+-passwd (string): Password
+-    Fake password field
+-
+ fake (string, [dummy]): 
+@@ -37,10 +34,2 @@
+ 
+-fail_start_on (string): Report bogus start failure on specified host
+-    Start actions will return failure if running on the host specified here, 
but
+-    the resource will start successfully anyway (future monitor calls will 
find it
+-    running). This can be used to test on-fail=ignore.
+-
+-envfile (string): Environment dump file
+-    If this is set, the environment will be dumped to this file for every 
call.
+-
+ Operations' defaults (advisory minimum):
+@@ -74,2 +63,5 @@
+ 
++stonith-timeout (time, [60s]): How long to wait for the STONITH action to 
complete per a stonith device.
++    Overrides the stonith-timeout cluster property
++
+ priority (integer, [0]): The priority of the stonith resource. Devices are 
tried in order of highest priority to lowest.
+@@ -87,10 +79,2 @@
+ 
+-pcmk_delay_max (time, [0s]): Enable random delay for stonith actions and 
specify the maximum of random delay
+-    This prevents double fencing when using slow devices such as sbd.
+-    Use this to enable random delay for stonith actions and specify the 
maximum of random delay.
+-
+-pcmk_action_limit (integer, [1]): The maximum number of actions can be 
performed in parallel on this device
+-    Pengine property concurrent-fencing=true needs to be configured first.
+-    Then use this to specify the maximum number of actions can be performed 
in parallel on this device. -1 is unlimited.
+-
+ pcmk_reboot_action (string, [reboot]): Advanced use only: An alternate 
command to run instead of 'reboot'
+--- a/test/testcases/newfeatures.exp   2016-10-20 22:50:33.756542999 +0000
++++ b/test/testcases/newfeatures.exp   2016-10-20 22:51:11.803701832 +0000
+@@ -18,2 +18,3 @@
+ .INP: alert notify_9 /usr/share/pacemaker/alerts/alert_snmp.sh         
attributes         trap_add_hires_timestamp_oid="false"         
trap_node_states="non-trap"         
trap_resource_tasks="start,stop,monitor,promote,demote"         to 
"192.168.40.9"
++ERROR: 17: alert not supported by the RNG schema
+ .INP: show tag:ones and type:location
+@@ -44,5 +45,2 @@
+       stonith-enabled=no
+-alert notify_9 "/usr/share/pacemaker/alerts/alert_snmp.sh" \
+-      attributes trap_add_hires_timestamp_oid=false trap_node_states=non-trap 
trap_resource_tasks="start,stop,monitor,promote,demote" \
+-      to 192.168.40.9
+ .INP: _test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/crmsh-2.3.1+git.1475245522.4172084/test/travis-tests.sh 
new/crmsh-2.3.1+git.1477204932.7939b51/test/travis-tests.sh
--- old/crmsh-2.3.1+git.1475245522.4172084/test/travis-tests.sh 1970-01-01 
01:00:00.000000000 +0100
+++ new/crmsh-2.3.1+git.1477204932.7939b51/test/travis-tests.sh 2016-10-23 
08:42:12.000000000 +0200
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -ev
+patch -p1 < test/travis-expected-pacemaker-1.1.12.patch
+./autogen.sh
+./configure --prefix=/usr
+sudo make install
+sudo cp -f /usr/bin/crm /usr/sbin/crm
+if [  "$TRAVIS_PYTHON_VERSION" = "2.7_with_system_site_packages" ]; then
+       pip -v --isolated install parallax
+       sudo /usr/share/crmsh/tests/regression.sh
+       cd /usr/share/crmsh/tests
+       sudo ./cib-tests.sh
+fi


Reply via email to