client/rhel/rhn-client-tools/src/up2date_client/hardware_gudev.py
| 2
java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
| 8
java/code/src/com/redhat/rhn/frontend/action/channel/manage/repo/RepoListSetupAction.java
| 4
java/code/src/com/redhat/rhn/manager/channel/RepoLister.java
| 21
java/code/src/com/redhat/rhn/taskomatic/task/repomd/DebPackageWriter.java
| 420 +++++-----
java/code/src/com/redhat/rhn/taskomatic/task/repomd/RepositoryWriter.java
| 33
6 files changed, 255 insertions(+), 233 deletions(-)
New commits:
commit 8f9a8e7a94cdcfaa0ab9183791ff3aceea173808
Author: Shannon Hughes <shughes(a)redhat.com>
Date: Thu May 13 11:43:48 2010 -0400
datasource queries for repolist listtag page
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
index ca4de55..2c4f19e 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
@@ -1031,6 +1031,14 @@ SELECT CP.package_id, CP.name_id, CP.evr_id, CP.package_arch_id
</query>
</mode>
+<mode name="contentsrc_for_org"
class="com.redhat.rhn.frontend.dto.ContentSourceDto">
+ <query params="org_id">
+ SELECT CS.id, CS.label, CS.last_synced
+ FROM rhnContentSource CS
+ WHERE CS.org_id = :org_id
+ </query>
+</mode>
+
<mode name="latest_package_equal_in_tree">
<query params="cid, name">
SELECT CP.package_id, CP.name_id, CP.evr_id, CP.package_arch_id
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/repo/RepoListSetupAction.java
b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/repo/RepoListSetupAction.java
index 0e35d03..69c1ea7 100644
---
a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/repo/RepoListSetupAction.java
+++
b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/repo/RepoListSetupAction.java
@@ -25,8 +25,8 @@ import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.redhat.rhn.common.util.DynamicComparator;
-import com.redhat.rhn.domain.channel.ContentSource;
import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.dto.ContentSourceDto;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.manager.channel.RepoLister;
@@ -48,7 +48,7 @@ public class RepoListSetupAction extends RhnAction {
request.setAttribute(mapping.getParameter(), Boolean.TRUE);
RequestContext context = new RequestContext(request);
User user = context.getLoggedInUser();
- List<ContentSource> result;
+ List<ContentSourceDto> result;
result = RepoLister.getInstance().list(user);
Collections.sort(result, LABEL_COMPARATOR);
diff --git a/java/code/src/com/redhat/rhn/manager/channel/RepoLister.java
b/java/code/src/com/redhat/rhn/manager/channel/RepoLister.java
index 0d5c9a4..8cc5ed2 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/RepoLister.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/RepoLister.java
@@ -14,13 +14,17 @@
*/
package com.redhat.rhn.manager.channel;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import com.redhat.rhn.common.db.datasource.DataResult;
-import com.redhat.rhn.domain.channel.ContentSource;
+import com.redhat.rhn.common.db.datasource.ModeFactory;
+import com.redhat.rhn.common.db.datasource.SelectMode;
import
com.redhat.rhn.domain.org.Org;
import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.dto.ContentSourceDto;
import com.redhat.rhn.manager.BaseManager;
/**
@@ -45,17 +49,20 @@ public class RepoLister extends BaseManager {
return INSTANCE;
}
- public DataResult<ContentSource> sourcesInOrg(Org orgIn) {
+ public DataResult<ContentSourceDto> sourcesInOrg(Org orgIn) {
- //need to determine if we want to use Hibernate or DataSource query here
- DataResult<ContentSource> returnDataResult = null;
-
+ SelectMode m = ModeFactory.getMode("Channel_queries",
"contentsrc_for_org");
+ Map params = new HashMap();
+ params.put("org_id", orgIn.getId());
+ Map elabParams = new HashMap();
+ DataResult<ContentSourceDto> returnDataResult = makeDataResult(params,
+ elabParams, null, m);
return returnDataResult;
}
- public List<ContentSource> list(User user) {
- List <ContentSource> repos = new LinkedList<ContentSource>();
+ public List<ContentSourceDto> list(User user) {
+ List <ContentSourceDto> repos = new LinkedList<ContentSourceDto>();
repos.addAll(sourcesInOrg(user.getOrg()));
return repos;
}
commit 40fbe4437a184f2019b8988a99c5db9a617886d0
Merge: 8be368a... d6b95ee...
Author: Shannon Hughes <shughes(a)redhat.com>
Date: Thu May 13 11:26:59 2010 -0400
Merge branch 'master' into repo
commit d6b95eeb1ed40004d2ad10db12a9c9b03b4fc412
Author: Lukáš Ďurfina <lukas.durfina(a)gmail.com>
Date: Thu May 13 11:33:49 2010 +0200
Fix style of commit c4e387bbb1c5cf16f54a2fa968a5613121bc1d7a
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/DebPackageWriter.java
b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/DebPackageWriter.java
index a05ea00..78e76ab 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/DebPackageWriter.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/DebPackageWriter.java
@@ -35,212 +35,218 @@ import java.util.zip.GZIPOutputStream;
*/
public class DebPackageWriter {
- private static Logger log = Logger.getLogger(DebPackageWriter.class);
- private String filenamePackages = "";
- private PackageCapabilityIterator providesIterator;
- private PackageCapabilityIterator requiresIterator;
- private PackageCapabilityIterator conflictsIterator;
- private PackageCapabilityIterator obsoletesIterator;
-
- /**
- *
- * @param prefix
- */
- public DebPackageWriter(Channel channel, String prefix) {
- log.debug("DebPackageWriter created");
- try {
- filenamePackages = prefix + "Packages";
- File f = new File(filenamePackages);
- if (f.exists()) {
- f.delete();
- }
- f.createNewFile();
-
- providesIterator = new PackageCapabilityIterator(
- channel,
- TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_PROVIDES);
- requiresIterator = new PackageCapabilityIterator(
- channel,
- TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_REQUIRES);
- conflictsIterator = new PackageCapabilityIterator(
- channel,
- TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_CONFLICTS);
- obsoletesIterator = new PackageCapabilityIterator(
- channel,
- TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_OBSOLETES);
- } catch (Exception e) {
- log.debug("Create file Packages failed " + e.toString());
- }
- }
-
- /**
- * add package info to Packages file in repository
- *
- * @param pkgDto
- */
- public void addPackage(PackageDto pkgDto) {
- try {
- BufferedWriter out = new BufferedWriter(new FileWriter(
- filenamePackages, true));
-
- out.write("Package: ");
- out.write(pkgDto.getName());
- out.newLine();
-
- out.write("Version: ");
- out.write(pkgDto.getVersion());
- String release = pkgDto.getRelease();
- if (!release.equalsIgnoreCase("X")) {
- out.write("-" + release);
- }
- out.newLine();
-
- out.write("Architecture: ");
- out.write(pkgDto.getArchLabel().replace("-deb", ""));
- out.newLine();
-
- out.write("Maintainer: ");
- out.write(pkgDto.getVendor());
- out.newLine();
-
- out.write("Installed-Size: ");
- out.write(pkgDto.getPackageSize().toString());
- out.newLine();
-
- // dependencies
- addPackageDepData(out, providesIterator,
- pkgDto.getId().longValue(), "Provides");
- addPackageDepData(out, requiresIterator,
- pkgDto.getId().longValue(), "Depends");
- addPackageDepData(out, conflictsIterator, pkgDto.getId()
- .longValue(), "Conflicts");
- addPackageDepData(out, obsoletesIterator, pkgDto.getId()
- .longValue(), "Replaces");
-
- // TODO FIX path to package, Apache needs access to it
- out.write("Filename: ");
- out.write("/var/satellite/" + pkgDto.getPath());
- out.newLine();
-
- // size of package, is checked by apt
- out.write("Size: ");
- out.write(pkgDto.getPackageSize().toString());
- out.newLine();
-
- // at least one checksum is required by apt
- if (pkgDto.getChecksumType().equalsIgnoreCase("md5")) {
- out.write("MD5sum: ");
- out.write(pkgDto.getChecksum());
- out.newLine();
- }
-
- if (pkgDto.getChecksumType().equalsIgnoreCase("sha1")) {
- out.write("SHA1: ");
- out.write(pkgDto.getChecksum());
- out.newLine();
- }
-
- if (pkgDto.getChecksumType().equalsIgnoreCase("sha256")) {
- out.write("SHA256: ");
- out.write(pkgDto.getChecksum());
- out.newLine();
- }
-
- out.write("Section: ");
- out.write(pkgDto.getPackageGroupName());
- out.newLine();
-
- // Priority is not stored in DB
- // out.write("Priority: ");
- // out.write(pkgDto.get);
- // out.newLine();
-
- // out.write("Homepage: ");
- // out.write(pkgDto.get);
- // out.newLine();
-
- out.write("Description: ");
- out.write(pkgDto.getDescription());
- out.newLine();
-
- // new line after package metadata
- out.newLine();
- out.flush();
- out.close();
- } catch (Exception e) {
- log.debug("Failed to add deb package " + e.toString());
- }
- }
-
- /**
- *
- * @param pkgCapIter
- * pkg capability info
- * @param pkgId
- * package Id to set
- * @param dep
- * dependency info
- */
- private void addPackageDepData(BufferedWriter out,
- PackageCapabilityIterator pkgCapIter, long pkgId, String dep) {
- int count = 0;
- try {
- while (pkgCapIter.hasNextForPackage(pkgId)) {
- if (count == 0) {
- out.write(dep + ": ");
- }
- else {
- out.write(", ");
- }
- count++;
- String name = pkgCapIter.getString("name");
- String version = pkgCapIter.getString("version");
- out.write(name);
- if (version != null && !version.isEmpty()) {
- out.write(" (" + version + ")");
- }
- }
- } catch (Exception e) {
- log.debug("failed to write DEB dependency " + dep + " "
- + e.toString());
- }
- try {
- if (count > 0) {
- out.newLine();
- }
- }
- catch (Exception e) {
- }
-
- }
-
- /**
- * Create Packages.gz from Packages
- */
- public void generatePackagesGz() {
- try {
- // Create the GZIP output stream
- String outFilename = filenamePackages + ".gz";
- GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(
- outFilename, false));
-
- // Open the input file
- FileInputStream in = new FileInputStream(filenamePackages);
-
- // Transfer bytes from the input file to the GZIP output stream
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
-
- // Complete the GZIP file
- out.finish();
- out.close();
- } catch (IOException e) {
- log.debug("Failed to create Packages.gz " + e.toString());
- }
- }
+ private static Logger log = Logger.getLogger(DebPackageWriter.class);
+ private String filenamePackages = "";
+ private PackageCapabilityIterator providesIterator;
+ private PackageCapabilityIterator requiresIterator;
+ private PackageCapabilityIterator conflictsIterator;
+ private PackageCapabilityIterator obsoletesIterator;
+
+ /**
+ *
+ * @param channel debian channel
+ * @param prefix path to repository
+ */
+ public DebPackageWriter(Channel channel, String prefix) {
+ log.debug("DebPackageWriter created");
+ try {
+ filenamePackages = prefix + "Packages";
+ File f = new File(filenamePackages);
+ if (f.exists()) {
+ f.delete();
+ }
+ f.createNewFile();
+
+ providesIterator = new PackageCapabilityIterator(
+ channel,
+ TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_PROVIDES);
+ requiresIterator = new PackageCapabilityIterator(
+ channel,
+ TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_REQUIRES);
+ conflictsIterator = new PackageCapabilityIterator(
+ channel,
+ TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_CONFLICTS);
+ obsoletesIterator = new PackageCapabilityIterator(
+ channel,
+ TaskConstants.TASK_QUERY_REPOMD_GENERATOR_CAPABILITY_OBSOLETES);
+ }
+ catch (Exception e) {
+ log.debug("Create file Packages failed " + e.toString());
+ }
+ }
+
+ /**
+ * add package info to Packages file in repository
+ *
+ * @param pkgDto package object
+ */
+ public void addPackage(PackageDto pkgDto) {
+ try {
+ BufferedWriter out = new BufferedWriter(new FileWriter(
+ filenamePackages, true));
+
+ out.write("Package: ");
+ out.write(pkgDto.getName());
+ out.newLine();
+
+ out.write("Version: ");
+ out.write(pkgDto.getVersion());
+ String release = pkgDto.getRelease();
+ if (!release.equalsIgnoreCase("X")) {
+ out.write("-" + release);
+ }
+ out.newLine();
+
+ out.write("Architecture: ");
+ out.write(pkgDto.getArchLabel().replace("-deb", ""));
+ out.newLine();
+
+ out.write("Maintainer: ");
+ out.write(pkgDto.getVendor());
+ out.newLine();
+
+ out.write("Installed-Size: ");
+ out.write(pkgDto.getPackageSize().toString());
+ out.newLine();
+
+ // dependencies
+ addPackageDepData(out, providesIterator,
+ pkgDto.getId().longValue(), "Provides");
+ addPackageDepData(out, requiresIterator,
+ pkgDto.getId().longValue(), "Depends");
+ addPackageDepData(out, conflictsIterator, pkgDto.getId()
+ .longValue(), "Conflicts");
+ addPackageDepData(out, obsoletesIterator, pkgDto.getId()
+ .longValue(), "Replaces");
+
+ // TODO FIX path to package, Apache needs access to it
+ out.write("Filename: ");
+ out.write("/var/satellite/" + pkgDto.getPath());
+ out.newLine();
+
+ // size of package, is checked by apt
+ out.write("Size: ");
+ out.write(pkgDto.getPackageSize().toString());
+ out.newLine();
+
+ // at least one checksum is required by apt
+ if (pkgDto.getChecksumType().equalsIgnoreCase("md5")) {
+ out.write("MD5sum: ");
+ out.write(pkgDto.getChecksum());
+ out.newLine();
+ }
+
+ if (pkgDto.getChecksumType().equalsIgnoreCase("sha1")) {
+ out.write("SHA1: ");
+ out.write(pkgDto.getChecksum());
+ out.newLine();
+ }
+
+ if (pkgDto.getChecksumType().equalsIgnoreCase("sha256")) {
+ out.write("SHA256: ");
+ out.write(pkgDto.getChecksum());
+ out.newLine();
+ }
+
+ out.write("Section: ");
+ out.write(pkgDto.getPackageGroupName());
+ out.newLine();
+
+ // Priority is not stored in DB
+ // out.write("Priority: ");
+ // out.write(pkgDto.get);
+ // out.newLine();
+
+ // out.write("Homepage: ");
+ // out.write(pkgDto.get);
+ // out.newLine();
+
+ out.write("Description: ");
+ out.write(pkgDto.getDescription());
+ out.newLine();
+
+ // new line after package metadata
+ out.newLine();
+ out.flush();
+ out.close();
+ }
+ catch (Exception e) {
+ log.debug("Failed to add deb package " + e.toString());
+ }
+ }
+
+ /**
+ * @param out
+ *
+ * @param pkgCapIter
+ * pkg capability info
+ * @param pkgId
+ * package Id to set
+ * @param dep
+ * dependency info
+ */
+ private void addPackageDepData(BufferedWriter out,
+ PackageCapabilityIterator pkgCapIter, long pkgId, String dep) {
+ int count = 0;
+ try {
+ while (pkgCapIter.hasNextForPackage(pkgId)) {
+ if (count == 0) {
+ out.write(dep + ": ");
+ }
+ else {
+ out.write(", ");
+ }
+ count++;
+ String name = pkgCapIter.getString("name");
+ String version = pkgCapIter.getString("version");
+ out.write(name);
+ if (version != null && !version.isEmpty()) {
+ out.write(" (" + version + ")");
+ }
+ }
+ }
+ catch (Exception e) {
+ log.debug("failed to write DEB dependency " + dep + " " +
e.toString());
+ }
+ try {
+ if (count > 0) {
+ out.newLine();
+ }
+ }
+ catch (Exception e) {
+ log.debug("failed to write new line " + e.toString());
+ }
+
+ }
+
+ /**
+ * Create Packages.gz from Packages
+ */
+ public void generatePackagesGz() {
+ try {
+ // Create the GZIP output stream
+ String outFilename = filenamePackages + ".gz";
+ GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(
+ outFilename, false));
+
+ // Open the input file
+ FileInputStream in = new FileInputStream(filenamePackages);
+
+ // Transfer bytes from the input file to the GZIP output stream
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+
+ // Complete the GZIP file
+ out.finish();
+ out.close();
+ }
+ catch (IOException e) {
+ log.debug("Failed to create Packages.gz " + e.toString());
+ }
+ }
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/RepositoryWriter.java
b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/RepositoryWriter.java
index 52018c2..6530614 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/repomd/RepositoryWriter.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/repomd/RepositoryWriter.java
@@ -94,21 +94,21 @@ public class RepositoryWriter {
PackageManager.createRepoEntrys(channel.getId());
- String prefix = mountPoint + File.separator + pathPrefix
- + File.separator + channel.getLabel() + File.separator;
+ String prefix = mountPoint + File.separator + pathPrefix +
+ File.separator + channel.getLabel() + File.separator;
if
(channel.getChannelArch().getArchType().getLabel().equalsIgnoreCase("deb")) {
log.info("Generating new DEB repository for channel " +
channel.getLabel());
generateDebRepository(channel, prefix);
}
else {
- log.info("Generating new repository metatada for channel '"
- + channel.getLabel() + "' " +
channel.getPackageCount()
- + " packages, " + channel.getErrataCount() + "
updates");
+ log.info("Generating new repository metatada for channel '" +
+ channel.getLabel() + "' " + channel.getPackageCount()
+
+ " packages, " + channel.getErrataCount() + "
updates");
if (!new File(prefix).mkdirs() && !new File(prefix).exists()) {
- throw new RepomdRuntimeException("Unable to create directory:
"
- + prefix);
+ throw new RepomdRuntimeException("Unable to create directory: "
+
+ prefix);
}
CompressingDigestOutputWriter primaryFile;
@@ -124,8 +124,8 @@ public class RepositoryWriter {
// MD2, MD5, SHA-1, SHA-256, SHA-384, SHA-512
String checksumAlgo = this.checksumtype;
if (checksumAlgo.toUpperCase().startsWith("SHA")) {
- checksumAlgo = this.checksumtype.substring(0, 3) + "-"
- + this.checksumtype.substring(3);
+ checksumAlgo = this.checksumtype.substring(0, 3) + "-" +
+ this.checksumtype.substring(3);
}
// translate sha1 to sha for xml repo files
String checksumLabel = this.checksumtype;
@@ -204,10 +204,10 @@ public class RepositoryWriter {
.getCompressedChecksum(), otherFile
.getUncompressedChecksum(), channel.getLastModified());
- log.info("Starting updateinfo generation for '"
- + channel.getLabel() + '"');
- log.info("Checksum Type Value for generate updateinfo"
- + this.checksumtype);
+ log.info("Starting updateinfo generation for '" +
+ channel.getLabel() + '"');
+ log.info("Checksum Type Value for generate updateinfo" +
+ this.checksumtype);
RepomdIndexData updateinfoData = generateUpdateinfo(channel,
prefix, checksumAlgo);
@@ -254,10 +254,9 @@ public class RepositoryWriter {
renameFiles(prefix, channel.getLastModified().getTime(),
updateinfoData != null);
- log.info("Repository metadata generation for '"
- + channel.getLabel() + "' finished in "
- + (int) (new Date().getTime() - start.getTime()) / 1000
- + " seconds");
+ log.info("Repository metadata generation for '" +
+ channel.getLabel() + "' finished in " +
+ (int) (new Date().getTime() - start.getTime()) / 1000 + "
seconds");
}
}
commit cb136c947665fb7aa278a3de42a6e5b9cd1f4f6e
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Thu May 13 12:26:10 2010 +0200
557059 - we cannot have class None.
Addressing
[Thu May 13 06:18:39 2010] rhn_register D: rpcServer: Calling XMLRPC
registration.add_hw_profile
[Thu May 13 06:18:39 2010] rhn_register
Traceback (most recent call last):
File "/usr/share/rhn/up2date_client/tui.py", line 891, in run
rhnreg.sendHardware(systemId, self.tui.hardware)
File "/usr/share/rhn/up2date_client/rhnreg.py", line 472, in sendHardware
s.registration.add_hw_profile(systemId, hardwareList)
File "/usr/share/rhn/up2date_client/rhnserver.py", line 50, in __call__
return rpcServer.doCall(method, *args, **kwargs)
File "/usr/share/rhn/up2date_client/rpcServer.py", line 204, in doCall
ret = method(*args, **kwargs)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "/usr/share/rhn/up2date_client/rpcServer.py", line 39, in _request1
ret = self._request(methodname, params)
File "/usr/lib/python2.6/site-packages/rhn/rpclib.py", line 350, in
_request
request = self._req_body(params, methodname)
File "/usr/lib/python2.6/site-packages/rhn/rpclib.py", line 231, in
_req_body
return xmlrpclib.dumps(params, methodname, encoding=self._encoding)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1132, in dumps
data = m.dumps(params)
File "/usr/lib64/python2.6/xmlrpclib.py", line 677, in dumps
dump(v, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 699, in __dump
f(self, value, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 759, in dump_array
dump(v, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 699, in __dump
f(self, value, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 780, in dump_struct
dump(v, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 699, in __dump
f(self, value, write)
File "/usr/lib64/python2.6/xmlrpclib.py", line 703, in dump_nil
raise TypeError, "cannot marshal None unless allow_none is enabled"
<type 'exceptions.TypeError'>: cannot marshal None unless allow_none is
enabled
diff --git a/client/rhel/rhn-client-tools/src/up2date_client/hardware_gudev.py
b/client/rhel/rhn-client-tools/src/up2date_client/hardware_gudev.py
index 4c07373..040f6af 100644
--- a/client/rhel/rhn-client-tools/src/up2date_client/hardware_gudev.py
+++ b/client/rhel/rhn-client-tools/src/up2date_client/hardware_gudev.py
@@ -45,6 +45,8 @@ def get_devices():
'class': _clasify_class(device),
'desc': _get_device_desc(device),
}
+ if result_item['class'] is None:
+ result_item['class'] = 'OTHER'
if result_item['driver'] is None:
result_item['driver'] = 'unknown'
if subsystem == 'block':