Hello community, here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2018-02-14 10:50:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crmsh (Old) and /work/SRC/openSUSE:Factory/.crmsh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh" Wed Feb 14 10:50:54 2018 rev:141 rq:576001 version:4.0.0+git.1518510059.7a6f94e6 Changes: -------- --- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2018-02-09 15:48:02.158335569 +0100 +++ /work/SRC/openSUSE:Factory/.crmsh.new/crmsh.changes 2018-02-14 10:50:55.295196305 +0100 @@ -1,0 +2,9 @@ +Tue Feb 13 08:21:19 UTC 2018 - kgronl...@suse.com + +- Update to version 4.0.0+git.1518510059.7a6f94e6: + * fix: bootstrap: Create pacemaker_remote authkey(#bsc 1077389) + * low: bootstrap: Always ask whether to use sbd + * fix: hb_report: got the right file decompressor(bsc#1077553) + * medium: hb_report: Avoid calling deprecated network utilities (bsc#1073638) + +------------------------------------------------------------------- Old: ---- crmsh-4.0.0+git.1518073467.76fb6a0b.tar.bz2 New: ---- crmsh-4.0.0+git.1518510059.7a6f94e6.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crmsh.spec ++++++ --- /var/tmp/diff_new_pack.yz9e04/_old 2018-02-14 10:50:56.035169674 +0100 +++ /var/tmp/diff_new_pack.yz9e04/_new 2018-02-14 10:50:56.039169530 +0100 @@ -36,7 +36,7 @@ Summary: High Availability cluster command-line interface License: GPL-2.0+ Group: %{pkg_group} -Version: 4.0.0+git.1518073467.76fb6a0b +Version: 4.0.0+git.1518510059.7a6f94e6 Release: 0 Url: http://crmsh.github.io Source0: %{name}-%{version}.tar.bz2 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.yz9e04/_old 2018-02-14 10:50:56.083167947 +0100 +++ /var/tmp/diff_new_pack.yz9e04/_new 2018-02-14 10:50:56.083167947 +0100 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/ClusterLabs/crmsh.git</param> - <param name="changesrevision">76fb6a0be7c121e971907d98af7e4b3bbc6f9548</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">7a6f94e6613a604a540956ff56324a788976b7db</param></service></servicedata> \ No newline at end of file ++++++ crmsh-4.0.0+git.1518073467.76fb6a0b.tar.bz2 -> crmsh-4.0.0+git.1518510059.7a6f94e6.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.0.0+git.1518073467.76fb6a0b/crmsh/bootstrap.py new/crmsh-4.0.0+git.1518510059.7a6f94e6/crmsh/bootstrap.py --- old/crmsh-4.0.0+git.1518073467.76fb6a0b/crmsh/bootstrap.py 2018-02-08 08:04:27.000000000 +0100 +++ new/crmsh-4.0.0+git.1518510059.7a6f94e6/crmsh/bootstrap.py 2018-02-13 09:20:59.000000000 +0100 @@ -37,6 +37,8 @@ SYSCONFIG_SBD = "/etc/sysconfig/sbd" SYSCONFIG_FW = "/etc/sysconfig/SuSEfirewall2" SYSCONFIG_FW_CLUSTER = "/etc/sysconfig/SuSEfirewall2.d/services/cluster" +PCMK_REMOTE_AUTH = "/etc/pacemaker/authkey" + INIT_STAGES = ("ssh", "ssh_remote", "csync2", "csync2_remote", "corosync", "storage", "sbd", "cluster", "vgfs", "admin") @@ -684,6 +686,7 @@ include /etc/samba/smb.conf; include /etc/sysconfig/pacemaker; include /etc/sysconfig/sbd; +include /etc/pacemaker/authkey; } """ % (utils.this_node()), CSYNC2_CFG) @@ -745,6 +748,26 @@ invoke("corosync-keygen -l") +def init_remote_auth(): + """ + Generate the pacemaker-remote authkey + """ + if os.path.exists(PCMK_REMOTE_AUTH): + if not confirm("%s already exists - overwrite?" % (PCMK_REMOTE_AUTH)): + return + try: + os.remove(PCMK_REMOTE_AUTH) + except os.error: + error("Failed to remove %s" % (PCMK_REMOTE_AUTH)) + + pcmk_remote_dir = os.path.dirname(PCMK_REMOTE_AUTH) + if not os.path.exists(pcmk_remote_dir): + invoke("mkdir -p --mode=0750 {}".format(pcmk_remote_dir)) + invoke("chgrp haclient {}".format(pcmk_remote_dir)) + + invoke("dd if=/dev/urandom of={} bs=4096 count=1".format(PCMK_REMOTE_AUTH)) + + def valid_network(addr, prev_value=None): """ bindnetaddr(IPv4) must be one of the local networks @@ -1282,11 +1305,6 @@ specify here will be destroyed. """) - configured_dev = configured_sbd_device() - if configured_dev: - if not confirm("SBD is already configured to use %s - overwrite?" % (configured_dev)): - return - if not confirm("Do you wish to use SBD?"): warn("Not configuring SBD - STONITH will be disabled.") # Comment out SBD devices if present @@ -1303,6 +1321,11 @@ if utils.is_program("sbd") is None: error("sbd executable not found! Cannot configure SBD.") + configured_dev = configured_sbd_device() + if configured_dev: + if not confirm("SBD is already configured to use %s - overwrite?" % (configured_dev)): + return + dev = "" dev_looks_sane = False while not dev_looks_sane: @@ -1550,6 +1573,7 @@ # subseqent join of another node can fail its sync of corosync.conf # when it updates expected_votes. Grrr... if not invoke('ssh root@%s "csync2 -mr / ; csync2 -fr / ; csync2 -xv"' % (seed_host)): + print("") warn("csync2 run failed - some files may not be sync'd") status_done() @@ -2080,6 +2104,7 @@ init_ssh() init_csync2() init_corosync() + init_remote_auth() if template == 'ocfs2': if sbd_device is None or ocfs2_device is None: init_storage() @@ -2136,6 +2161,7 @@ _context.cluster_node = cluster_node join_ssh(cluster_node) + join_remote_auth(cluster_node) join_csync2(cluster_node) join_ssh_merge(cluster_node) join_cluster(cluster_node) @@ -2143,6 +2169,15 @@ status("Done (log saved to %s)" % (LOG_FILE)) +def join_remote_auth(node): + invoke("rm -f {}".format(PCMK_REMOTE_AUTH)) + pcmk_remote_dir = os.path.dirname(PCMK_REMOTE_AUTH) + if not os.path.exists(pcmk_remote_dir): + invoke("mkdir -p --mode=0750 {}".format(pcmk_remote_dir)) + invoke("chgrp haclient {}".format(pcmk_remote_dir)) + invoke("touch {}".format(PCMK_REMOTE_AUTH)) + + def bootstrap_remove(cluster_node=None, ui_context=None, quiet=False, yes_to_all=False, force=False): """ -c <cluster-node> - node to remove from cluster diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.0.0+git.1518073467.76fb6a0b/hb_report/utillib.py new/crmsh-4.0.0+git.1518510059.7a6f94e6/hb_report/utillib.py --- old/crmsh-4.0.0+git.1518073467.76fb6a0b/hb_report/utillib.py 2018-02-08 08:04:27.000000000 +0100 +++ new/crmsh-4.0.0+git.1518510059.7a6f94e6/hb_report/utillib.py 2018-02-13 09:20:59.000000000 +0100 @@ -296,7 +296,7 @@ os.symlink(constants.HALOG_F, os.path.join(constants.WORKDIR, os.path.basename(l))) continue if is_our_log(l, constants.FROM_TIME, constants.TO_TIME) == 4: - log_warning("found irregular log file %s" % l) + log_debug("found irregular log file %s" % l) outf = os.path.join(constants.WORKDIR, os.path.basename(l)) shutil.copy2(l, constants.WORKDIR) log_size(l, outf+'.info') @@ -531,16 +531,13 @@ def find_decompressor(log_file): - decompressor = "echo" + decompressor = "cat" if re.search("bz2$", log_file): decompressor = "bzip2 -dc" elif re.search("gz$", log_file): decompressor = "gzip -dc" elif re.search("xz$", log_file): decompressor = "xz -dc" - else: - if re.search("text", get_command_info("file %s" % log_file)[1]): - decompressor = "cat" return decompressor @@ -1597,7 +1594,7 @@ def sys_stats(): out_string = "" cmd_list = ["hostname", "uptime", "ps axf", "ps auxw", "top -b -n 1", - "ip addr", "netstat -i", "arp -an", "lsscsi", "lspci", + "ip addr", "ip -s link", "ip n show", "lsscsi", "lspci", "mount", "cat /proc/cpuinfo", "df"] for cmd in cmd_list: out_string += "##### run \"%s\" on %s\n" % (cmd, constants.WE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crmsh-4.0.0+git.1518073467.76fb6a0b/utils/crm_init.py new/crmsh-4.0.0+git.1518510059.7a6f94e6/utils/crm_init.py --- old/crmsh-4.0.0+git.1518073467.76fb6a0b/utils/crm_init.py 2018-02-08 08:04:27.000000000 +0100 +++ new/crmsh-4.0.0+git.1518510059.7a6f94e6/utils/crm_init.py 2018-02-13 09:20:59.000000000 +0100 @@ -65,17 +65,6 @@ def net_info(): ret = {} interfaces = [] - rc, out, err = crm_script.call(['netstat', '-nr']) - if rc == 0: - data = [l.split() for l in out.split('\n')] - if len(data) < 3: - return {'error': "Failed to parse netstat output"} - keys = data[1] - for line in data[2:]: - if len(line) == len(keys): - interfaces.append(dict(list(zip(keys, line)))) - else: - interfaces.append({'error': err.strip()}) ret['interfaces'] = interfaces hostname = platform.node().split('.')[0] try: