backend/spacewalk
by Michael Mraka
backend/spacewalk/common/rhn_rpm.py | 35 +++++++++++++++--------------------
1 file changed, 15 insertions(+), 20 deletions(-)
New commits:
commit dbc22fe7fd38e318975cedb6f2edcf718c26a1ba
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Jan 19 22:23:55 2010 +0100
removed dead code - headerFromPackage() is more then 7 years dead
from rpm-python changelog:
* Tue Aug 06 2002 Jeff Johnson <jbj(a)redhat.com> 4.1-0.72
...
- python: eliminate rpm.headerFromPackage() tuple return, deprecated.
- python: add ts.hdrFromFdno(fdno) method.
- python: the death of rpm.headerFromPackage(), use ts.hdrFromFdno().
...
diff --git a/backend/spacewalk/common/rhn_rpm.py b/backend/spacewalk/common/rhn_rpm.py
index f05fd55..06a5995 100644
--- a/backend/spacewalk/common/rhn_rpm.py
+++ b/backend/spacewalk/common/rhn_rpm.py
@@ -296,27 +296,22 @@ def get_package_header(filename=None, file=None, fd=None):
else:
file_desc = f.fileno()
- if hasattr(rpm, 'headerFromPackage'):
- hdr, is_source = rpm.headerFromPackage(file_desc)
- if hdr is None:
- raise InvalidPackageError
+ if hasattr(rpm, 'readHeaderFromFD'):
+ header_start, header_end = \
+ get_header_byte_range(os.fdopen(os.dup(file_desc)))
+ os.lseek(file_desc, header_start, 0)
+ hdr, offset = rpm.readHeaderFromFD(file_desc)
else:
- if hasattr(rpm, 'readHeaderFromFD'):
- header_start, header_end = \
- get_header_byte_range(os.fdopen(os.dup(file_desc)))
- os.lseek(file_desc, header_start, 0)
- hdr, offset = rpm.readHeaderFromFD(file_desc)
- else:
- # RHEL-4 and older, do the old way
- ts = RPMReadOnlyTransaction()
- nomd5 = getattr(rpm, 'RPMVSF_NOMD5')
- needpayload = getattr(rpm, 'RPMVSF_NEEDPAYLOAD')
- ts.pushVSFlags(~(nomd5 | needpayload))
- hdr = RPMReadOnlyTransaction().hdrFromFdno(file_desc)
- ts.popVSFlags()
- if hdr is None:
- raise InvalidPackageError
- is_source = hdr[getattr(rpm, 'RPMTAG_SOURCEPACKAGE')]
+ # RHEL-4 and older, do the old way
+ ts = RPMReadOnlyTransaction()
+ nomd5 = getattr(rpm, 'RPMVSF_NOMD5')
+ needpayload = getattr(rpm, 'RPMVSF_NEEDPAYLOAD')
+ ts.pushVSFlags(~(nomd5 | needpayload))
+ hdr = RPMReadOnlyTransaction().hdrFromFdno(file_desc)
+ ts.popVSFlags()
+ if hdr is None:
+ raise InvalidPackageError
+ is_source = hdr[getattr(rpm, 'RPMTAG_SOURCEPACKAGE')]
return RPM_Header(hdr, is_source)
14 years, 3 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit b73e1c29250fab089e00d2f877652c7301a99de4
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Jan 19 10:46:05 2010 -0500
fixing some sloppy code
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
index 217c444..28aeb7f 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
@@ -124,7 +124,7 @@ public class ChannelEditor {
if (add) {
ChannelManager.addPackages(channel, list, user);
}
- else if (!add) {
+ else {
ChannelManager.removePackages(channel, list, user);
}
14 years, 3 months
2 commits - java/code
by Tomas Lestach
java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/tree/KickstartTreeHandler.java | 24 ++++++++++
java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java | 14 +++--
2 files changed, 32 insertions(+), 6 deletions(-)
New commits:
commit 6baa5e5c5345688bf64beae62d9ded4593225b90
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Tue Jan 19 16:11:21 2010 +0100
fixed UserHandlerTest CreateOrgCommandTest
diff --git a/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java b/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
index f53e57e..ba04a3f 100644
--- a/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/user/CreateUserCommand.java
@@ -218,12 +218,14 @@ public class CreateUserCommand {
* errors list.
*/
private void validatePrefix() {
- // Make sure set prefix is valid
- SortedSet validPrefixes = LocalizationService.getInstance().availablePrefixes();
- if (!validPrefixes.contains(user.getPrefix())) {
- errors.add(new ValidatorError(
- "Invalid prefix [" + user.getPrefix() + "]. Must be one of " +
- validPrefixes.toString()));
+ if (user.getPrefix() != null) {
+ // Make sure whether prefix is valid, if it is set
+ SortedSet validPrefixes = LocalizationService.getInstance().availablePrefixes();
+ if (!validPrefixes.contains(user.getPrefix())) {
+ errors.add(new ValidatorError(
+ "Invalid prefix [" + user.getPrefix() + "]. Must be one of " +
+ validPrefixes.toString()));
+ }
}
}
commit 29fdd175dee934867a7e824437f724d57f92e646
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Jan 18 17:58:03 2010 +0100
493176 - introducing kickstart.tree.getDetails API call
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/tree/KickstartTreeHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/tree/KickstartTreeHandler.java
index c3d21ce..41534a9 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/tree/KickstartTreeHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/tree/KickstartTreeHandler.java
@@ -40,6 +40,30 @@ import java.util.List;
public class KickstartTreeHandler extends BaseHandler {
/**
+ * Returns details of kickstartable tree specified by the label
+ * @param sessionKey User's session key.
+ * @param treeLabel Label of kickstartable tree to search.
+ * @return found KickstartableTreeObject
+ *
+ * @xmlrpc.doc The detailed information about a kickstartable tree given the tree name.
+ * @xmlrpc.param #param("string", "sessionKey")
+ * @xmlrpc.param #param_desc("string", "treeLabel", "Label of kickstartable tree to
+ * search.")
+ * @xmlrpc.returntype $KickstartTreeSerializer
+ */
+ public KickstartableTree getDetails(String sessionKey, String treeLabel) {
+ User loggedInUser = getLoggedInUser(sessionKey);
+ ensureConfigAdmin(loggedInUser);
+
+ KickstartableTree tree = KickstartFactory.lookupKickstartTreeByLabel(treeLabel);
+ if (tree == null) {
+ throw new InvalidChannelLabelException();
+ }
+
+ return tree;
+ }
+
+ /**
* List the available kickstartable trees for the given channel.
* @param sessionKey User's session key.
* @param channelLabel Label of channel to search.
14 years, 3 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 9f1838ec1d51a55ea2e572ce6fef7aec505ae98d
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Tue Jan 19 09:49:10 2010 -0500
small fix that was keeping package remove from working correctly
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
index 714f7c2..217c444 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelEditor.java
@@ -117,7 +117,7 @@ public class ChannelEditor {
List list = new ArrayList();
for (Iterator itr = packageIds.iterator(); itr.hasNext();) {
Long pid = convertObjectToLong(itr.next());
- if (!existingPids.contains(pid)) {
+ if (!add || !existingPids.contains(pid)) {
list.add(pid);
}
}
14 years, 3 months
Changes to 'refs/tags/spacewalk-backend-0.8.32-1'
by Michael Mraka
Tag 'spacewalk-backend-0.8.32-1' created by Michael Mraka <michael.mraka(a)redhat.com> at 2010-01-19 12:01 +0000
Tagging package [spacewalk-backend] version [0.8.32-1] in directory [backend/].
Changes since rhn-custom-info-5.4.2-1:
Justin Sherrill (2):
543184 - adding the ability to change logging on a kickstart file from the api
382561 - fixing daily status message to be formatted correctly
Michael Mraka (6):
log_debug is available only on server side, while this library is server/client shared
fixed DeprecationWarning: the sha module is deprecated; use the hashlib module instead
fixed DeprecationWarning: the sets module is deprecated
fixed DeprecationWarning: The popen2 module is deprecated. Use the subprocess module.
556460 - time values are <long> on F12
Automatic commit of package [spacewalk-backend] release [0.8.32-1].
Milan Zazrivec (1):
548812 - proper support for VDSM in rhn-virtualization
Tomas Lestach (1):
suppress source RPM messages during satellite-sync
---
backend/satellite_tools/disk_dumper/iss_runcommand.py | 12
backend/satellite_tools/satsync.py | 4
backend/server/importlib/headerSource.py | 8
backend/server/rhnServer/server_lib.py | 4
backend/server/rhnServer/server_token.py | 3
backend/spacewalk-backend.spec | 7
backend/spacewalk/common/fileutils.py | 12
client/tools/rhn-virtualization/virtualization/localvdsm.py | 4
client/tools/rhn-virtualization/virtualization/poller.py | 53 ++-
client/tools/rhn-virtualization/virtualization/support.py | 10
java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/ProfileHandler.java | 29 ++
java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java | 134 +++++++---
rel-eng/packages/spacewalk-backend | 2
13 files changed, 199 insertions(+), 83 deletions(-)
---
14 years, 3 months
backend/spacewalk-backend.spec rel-eng/packages
by Michael Mraka
backend/spacewalk-backend.spec | 7 ++++++-
rel-eng/packages/spacewalk-backend | 2 +-
2 files changed, 7 insertions(+), 2 deletions(-)
New commits:
commit ba25dcbb0ba53a0104f1738e60d15cf437835b4f
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Jan 19 13:01:51 2010 +0100
Automatic commit of package [spacewalk-backend] release [0.8.32-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec
index 743e93f..614dde3 100644
--- a/backend/spacewalk-backend.spec
+++ b/backend/spacewalk-backend.spec
@@ -8,7 +8,7 @@ Name: spacewalk-backend
Summary: Common programs needed to be installed on the Spacewalk servers/proxies
Group: Applications/Internet
License: GPLv2
-Version: 0.8.31
+Version: 0.8.32
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -609,6 +609,11 @@ rm -f %{rhnconf}/rhnSecret.py*
# $Id$
%changelog
+* Tue Jan 19 2010 Michael Mraka <michael.mraka(a)redhat.com> 0.8.32-1
+- 556460 - time values are <long> on Fedora 12
+- fixed DeprecationWarnings on Fedora 12
+- 524722 - add /etc/httpd/conf.d to the spacewalk-debug
+
* Mon Jan 18 2010 Michael Mraka <michael.mraka(a)redhat.com> 0.8.31-1
- fixed import errors
diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend
index 7dbc8f9..58d24bd 100644
--- a/rel-eng/packages/spacewalk-backend
+++ b/rel-eng/packages/spacewalk-backend
@@ -1 +1 @@
-0.8.31-1 backend/
+0.8.32-1 backend/
14 years, 3 months
backend/server
by Michael Mraka
backend/server/importlib/headerSource.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
New commits:
commit 74b827fecaa4178bf98ead2df5938859fef5c522
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Tue Jan 19 12:37:24 2010 +0100
556460 - time values are <long> on F12
diff --git a/backend/server/importlib/headerSource.py b/backend/server/importlib/headerSource.py
index 31dfc0a..7b49529 100644
--- a/backend/server/importlib/headerSource.py
+++ b/backend/server/importlib/headerSource.py
@@ -23,7 +23,7 @@ import string
from importLib import File, Dependency, ChangeLog, Channel, \
IncompletePackage, Package, SourcePackage
from backendLib import gmtime, localtime
-from types import ListType, TupleType, IntType, StringType
+from types import ListType, TupleType, IntType, LongType, StringType
from common import log_debug
from spacewalk.common.checksum import getFileChecksum
@@ -55,7 +55,7 @@ class rpmPackage(IncompletePackage):
# get the db field value from the header
val = header[field]
if f == 'build_time':
- if val is not None and isinstance(val, IntType):
+ if type(val) in (IntType, LongType):
# A UNIX timestamp
val = gmtime(val)
elif val:
@@ -307,7 +307,7 @@ class rpmFile(File, ChangeLog):
ChangeLog.populate(self, hash)
# Fix the time
tm = self['mtime']
- if tm is not None and isinstance(tm, IntType):
+ if type(tm) in (IntType, LongType):
# A UNIX timestamp
self['mtime'] = gmtime(tm)
if type(self['filedigest']) == StringType:
@@ -357,7 +357,7 @@ class rpmChangeLog(ChangeLog):
ChangeLog.populate(self, hash)
# Fix the time
tm = self['time']
- if tm is not None and isinstance(tm, IntType):
+ if type(tm) in (IntType, LongType):
# A UNIX timestamp
self['time'] = gmtime(tm)
# In changelog, data is either in UTF-8, or in any other
14 years, 3 months
client/tools
by Milan Zazrivec
client/tools/rhn-virtualization/virtualization/localvdsm.py | 4
client/tools/rhn-virtualization/virtualization/poller.py | 53 ++++++++----
client/tools/rhn-virtualization/virtualization/support.py | 10 +-
3 files changed, 43 insertions(+), 24 deletions(-)
New commits:
commit 0d6ee69617af7478159ee1b24e901bae8680f67f
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Tue Jan 19 11:09:59 2010 +0100
548812 - proper support for VDSM in rhn-virtualization
* distinguish between libvirt and vdsm interface when polling virt. host
for domain changes
* do not save virt. guest config files on a VDSM enabled host
* minor localvdsm.py polishing
diff --git a/client/tools/rhn-virtualization/virtualization/localvdsm.py b/client/tools/rhn-virtualization/virtualization/localvdsm.py
index 71feb48..67d2b24 100644
--- a/client/tools/rhn-virtualization/virtualization/localvdsm.py
+++ b/client/tools/rhn-virtualization/virtualization/localvdsm.py
@@ -40,8 +40,8 @@ def getLocalVdsName(tsPath):
def connect():
tsPath = getTrustStorePath()
port = config.get('addresses', 'management_port')
- addr = getLocalVdsName(tsPath)
if tsPath:
+ addr = getLocalVdsName(tsPath)
from M2Crypto.m2xmlrpclib import SSL_Transport
from M2Crypto import SSL
@@ -58,7 +58,7 @@ def connect():
server = xmlrpclib.Server('https://%s:%s' % (addr, port),
SSL_Transport(ctx))
else:
- server = xmlrpclib.Server('http://%s:%s' % (addr, port))
+ server = xmlrpclib.Server('http://localhost:%s' % port)
return server
if __name__ == '__main__':
diff --git a/client/tools/rhn-virtualization/virtualization/poller.py b/client/tools/rhn-virtualization/virtualization/poller.py
index 44aa232..bfe7953 100644
--- a/client/tools/rhn-virtualization/virtualization/poller.py
+++ b/client/tools/rhn-virtualization/virtualization/poller.py
@@ -41,7 +41,7 @@ from virtualization.util import hyphenize_uuid, \
is_fully_virt
from virtualization.poller_state_cache import PollerStateCache
-from virtualization.domain_directory import DomainDirectory
+from virtualization.domain_directory import DomainDirectory
###############################################################################
# Globals
###############################################################################
@@ -161,14 +161,20 @@ def poll_through_vdsm():
virt_type = VirtualizationType.FULLY
#Memory
- memory = int(domain['memSize'] * 1024);
+ memory = int(domain['memSize']) * 1024
+
+ # vcpus
+ if domain.has_key('smp'):
+ vcpus = domain['smp']
+ else:
+ vcpus = '1'
properties = {
PropertyType.NAME : domain['vmName'],
PropertyType.UUID : uuid,
PropertyType.TYPE : virt_type,
PropertyType.MEMORY : memory, # current memory
- PropertyType.VCPUS : domain['smp'],
+ PropertyType.VCPUS : vcpus,
PropertyType.STATE : status}
state[uuid] = properties
@@ -261,25 +267,38 @@ if __name__ == "__main__":
# First, handle the options.
_parse_options()
- # If no libvirt present, this program is pretty much useless. Just exit.
- if libvirt:
- # Now, crawl each of the domains on this host and obtain the new state.
+ # check for VDSM status
+ import commands
+ vdsm_enabled = False
+ status, msg = commands.getstatusoutput("/etc/init.d/vdsmd status")
+ if status == 0:
+ vdsm_enabled = True
+
+ # Crawl each of the domains on this host and obtain the new state.
+ if vdsm_enabled:
+ domain_list = poll_through_vdsm()
+ elif libvirt:
domain_list = poll_hypervisor()
+ else:
+ # If no libvirt nor vdsm is present, this program is pretty much
+ # useless. Just exit.
+ sys.exit(0)
+
+ if not domain_list:
+ # No domains returned, nothing to do, exit polling
+ sys.exit(0)
- if not domain_list:
- # No domains returned, nothing to do, exit polling
- sys.exit(0)
- # create the unkonwn domain config files
+ # create the unkonwn domain config files (for libvirt only)
+ if libvirt and not vdsm_enabled:
uuid_list = domain_list.keys()
domain = DomainDirectory()
domain.save_unknown_domain_configs(uuid_list)
- cached_state = PollerStateCache(domain_list,
- debug = options and options.debug)
+ cached_state = PollerStateCache(domain_list,
+ debug = options and options.debug)
- # Send notifications, if necessary.
- _send_notifications(cached_state)
-
- # Save the new state.
- cached_state.save()
+ # Send notifications, if necessary.
+ _send_notifications(cached_state)
+ # Save the new state.
+ cached_state.save()
diff --git a/client/tools/rhn-virtualization/virtualization/support.py b/client/tools/rhn-virtualization/virtualization/support.py
index a32b5d5..cb7a46d 100755
--- a/client/tools/rhn-virtualization/virtualization/support.py
+++ b/client/tools/rhn-virtualization/virtualization/support.py
@@ -93,11 +93,11 @@ def refresh():
else:
domains = poller.poll_hypervisor()
- if not len(domains) and libvirt.open(None).getType() == 'Xen':
- # On a KVM/QEMU host, libvirt reports no domain entry for host itself.
- # On a Xen host, either there were no domains or xend might not be
- # running. Don't proceed further.
- return
+ if not len(domains) and libvirt.open(None).getType() == 'Xen':
+ # On a KVM/QEMU host, libvirt reports no domain entry for host itself
+ # On a Xen host, either there were no domains or xend might not be
+ # running. Don't proceed further.
+ return
domain_list = domains.values()
domain_uuids = domains.keys()
14 years, 3 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java | 134 +++++++---
1 file changed, 98 insertions(+), 36 deletions(-)
New commits:
commit c944824f565d2f76efbf472c0d92365707d8e136
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Mon Jan 18 14:26:27 2010 -0500
382561 - fixing daily status message to be formatted correctly
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java b/java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java
index 4b78c74..aadc3fb 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/DailySummary.java
@@ -38,8 +38,10 @@ import org.quartz.JobExecutionException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
/**
* DailySummary task.
@@ -55,6 +57,11 @@ public class DailySummary extends SingleThreadedTestableTask {
* Used to log stats in the RHNDAEMONSTATE table
*/
public static final String DISPLAY_NAME = "daily_summary";
+ private static final int HEADER_SPACER = 10;
+ private static final int ERRATA_SPACER = 4;
+ private static final String ERRATA_UPDATE = "Errata Update";
+ private static final String ERRATA_INDENTION = StringUtils.repeat(" ", ERRATA_SPACER);
+
private Mail mail;
private static Logger log = Logger.getLogger(DailySummary.class);
@@ -295,64 +302,119 @@ public class DailySummary extends SingleThreadedTestableTask {
* @param actions list of recent actions
* @return the actions email message
*/
- public String renderActionsMessage(List actions) {
- // 25 spaces
- StringBuffer hdr = new StringBuffer(StringUtils.repeat(" ", 25));
+ public String renderActionsMessage(List<ActionMessage> actions) {
+
+ int longestActionLength = HEADER_SPACER;
+ int longestStatusLength = 0;
+ StringBuffer hdr = new StringBuffer();
StringBuffer body = new StringBuffer();
StringBuffer legend = new StringBuffer();
+ StringBuffer msg = new StringBuffer();
+ LinkedHashSet<String> statusSet = new LinkedHashSet();
+ TreeMap<String, HashMap<String, Integer>> nonErrataActions = new TreeMap();
+ TreeMap<String, HashMap<String, Integer>> errataActions = new TreeMap();
+ TreeMap<String, String> errataSynopsis = new TreeMap();
+
legend.append(LocalizationService
.getInstance().getMessage("taskomatic.daily.errata"));
legend.append("\n\n");
- StringBuffer msg = new StringBuffer();
-
- String lastHdr = "";
- boolean seenErrata = false;
- for (Iterator itr = actions.iterator(); itr.hasNext();) {
- ActionMessage am = (ActionMessage) itr.next();
-
- if (!am.getStatus().equals(lastHdr)) {
- lastHdr = am.getStatus();
- hdr.append(lastHdr);
- hdr.append("\t");
+ for (ActionMessage am : actions) {
+
+ if (!statusSet.contains(am.getStatus())) {
+ statusSet.add(am.getStatus());
+ if (am.getStatus().length() > longestStatusLength) {
+ longestStatusLength = am.getStatus().length();
+ }
}
-
- if (am.getType().startsWith("Errata")) {
- if (!seenErrata) {
- body.append(am.getType());
- body.append(":\n");
- seenErrata = true;
+
+ if (am.getType().equals(ERRATA_UPDATE)) {
+ String advisoryKey = ERRATA_INDENTION + am.getAdvisory();
+
+ if (!errataActions.containsKey(advisoryKey)) {
+ errataActions.put(advisoryKey, new HashMap());
+ if (advisoryKey.length() + HEADER_SPACER > longestActionLength) {
+ longestActionLength = advisoryKey.length() + HEADER_SPACER;
+ }
}
- else {
- body.append("\t");
- body.append(am.getAdvisory());
- body.append(" ");
- body.append(am.getCount());
- body.append("\n");
+ HashMap<String, Integer> counts = errataActions.get(advisoryKey);
+ counts.put(am.getStatus(), am.getCount());
+
+ if (!errataSynopsis.containsKey(am.getAdvisory())) {
+ errataSynopsis.put(am.getAdvisory(), am.getSynopsis());
}
- legend.append("\t");
- legend.append(am.getAdvisory());
- legend.append("\t");
- legend.append(am.getSynopsis());
- legend.append("\n");
}
else {
- body.append(am.getType());
- body.append("\t");
- body.append(am.getCount());
+ if (!nonErrataActions.containsKey(am.getType())) {
+ nonErrataActions.put(am.getType(), new HashMap());
+ if (am.getType().length() + HEADER_SPACER > longestActionLength) {
+ longestActionLength = am.getType().length() + HEADER_SPACER;
+ }
+ }
+ HashMap<String, Integer> counts = nonErrataActions.get(am.getType());
+ counts.put(am.getStatus(), am.getCount());
}
+
}
+ hdr.append(StringUtils.repeat(" ", longestActionLength));
+ for (String status : statusSet) {
+ hdr.append(status + StringUtils.repeat(" ", (longestStatusLength +
+ ERRATA_SPACER) - status.length()));
+ }
+
+ if (!errataActions.isEmpty()) {
+ body.append(ERRATA_UPDATE + ":" + "\n");
+ }
+ StringBuffer formattedErrataActions = renderActionTree(longestActionLength,
+ longestStatusLength, statusSet, errataActions);
+ body.append(formattedErrataActions);
+
+ for (String advisory : errataSynopsis.keySet()) {
+ legend.append(ERRATA_INDENTION + advisory + ERRATA_INDENTION +
+ errataSynopsis.get(advisory) + "\n");
+ }
+
+ StringBuffer formattedNonErrataActions = renderActionTree(longestActionLength,
+ longestStatusLength, statusSet, nonErrataActions);
+ body.append(formattedNonErrataActions);
+
// finally put all this together
msg.append(hdr.toString());
msg.append("\n");
msg.append(body.toString());
msg.append("\n\n");
- msg.append(legend.toString());
-
+ if (!errataSynopsis.isEmpty()) {
+ msg.append(legend.toString());
+ }
return msg.toString();
}
+ private StringBuffer renderActionTree(int longestActionLength,
+ int longestStatusLength, LinkedHashSet<String> statusSet,
+ TreeMap<String, HashMap<String, Integer>> actionTree) {
+ StringBuffer formattedActions = new StringBuffer();
+ for (String actionName : actionTree.keySet()) {
+ formattedActions.append(actionName +
+ StringUtils.repeat(" ", (longestActionLength - (actionName.length()))));
+ for (String status : statusSet) {
+ HashMap<String, Integer> counts = actionTree.get(actionName);
+ Integer theCount = counts.get(status);
+ if (counts.containsKey(status)) {
+ theCount = counts.get(status);
+ }
+ else {
+ theCount = 0;
+ }
+ formattedActions.append(theCount);
+ formattedActions.append(StringUtils.repeat(" ", longestStatusLength +
+ ERRATA_SPACER - theCount.toString().length()));
+ }
+ formattedActions.append("\n");
+ }
+ return formattedActions;
+ }
+
/**
* DO NOT CALL FROM OUTSIDE THIS CLASS. Prepares the email message string
* @param login users login
14 years, 3 months
backend/satellite_tools
by Tomas Lestach
backend/satellite_tools/satsync.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit e86d32ac3958690ae728cab55f39a88395730c85
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Jan 18 16:25:16 2010 +0100
suppress source RPM messages during satellite-sync
suppressing:
- No handler for step srpms
- Downloading source package metadata
even if anything gets downloaded
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index 119bcce..b20e90a 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -2412,7 +2412,7 @@ def processCommandline():
actionDict['errata'] = 0
#if actionDict['no-source-packages']:
- # actionDict['source-packages'] = 0
+ actionDict['source-packages'] = 0
if actionDict['no-packages']:
actionDict['packages'] = 0
@@ -2426,7 +2426,7 @@ def processCommandline():
#if actionDict['no-srpms']:
- # actionDict['srpms'] = 0
+ actionDict['srpms'] = 0
if OPTIONS.batch_size:
try:
14 years, 3 months