[Spacewalk-list] spacecmd configchannel_export fails with directories

Trent Johnson tljohnsn at oreilly.com
Thu Mar 7 14:50:59 UTC 2013


spacecmd configchannel_export fails when the channel contains a directory

A patch below contains a fix.

Thanks,
Trent

>From 99ab7b5bbd3bb19195bbf78b574e023cbac19d78 Mon Sep 17 00:00:00 2001
From: tljohnsn <tljohnsn at oreilly.com>
Date: Thu, 7 Mar 2013 08:39:05 -0600
Subject: [PATCH] Fix to allow configchannel_export to export a directory

---
 spacecmd/src/lib/configchannel.py |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/spacecmd/src/lib/configchannel.py b/spacecmd/src/lib/configchannel.py
index e8bf556..37f6b16 100644
--- a/spacecmd/src/lib/configchannel.py
+++ b/spacecmd/src/lib/configchannel.py
@@ -861,16 +861,19 @@ def export_configchannel_getdetails(self, channel):
             # i.e binary or non-xml encodable ascii files can be exported as
             # base64 encoded
             if not f.has_key('contents'):
-                if not self.check_api_version('11.1'):
-                    logging.warning("File %s could not be exported " % f['path'] +\
-                                        "with this API version(needs base64 encoding)")
+                if f['type'] == 'directory':
+                    f['contents'] = ''
                 else:
-                    logging.info("File %s could not be exported as" % f['path'] +\
-                                     " text...getting base64 encoded version")
-                    b64f = self.client.configchannel.getEncodedFileRevision(\
-                        self.session, channel, f['path'], f['revision'])
-                    f['contents'] = b64f['contents']
-                    f['contents_enc64'] = b64f['contents_enc64']
+                    if not self.check_api_version('11.1'):
+                        logging.warning("File %s could not be exported " % f['path'] +\
+                                            "with this API version(needs base64 encoding)")
+                    else:
+                        logging.info("File %s could not be exported as" % f['path'] +\
+                                         " text...getting base64 encoded version")
+                        b64f = self.client.configchannel.getEncodedFileRevision(\
+                            self.session, channel, f['path'], f['revision'])
+                        f['contents'] = b64f['contents']
+                        f['contents_enc64'] = b64f['contents_enc64']
 
         for k in [ 'channel', 'revision', 'creation', 'modified', \
                        'permissions_mode', 'binary', 'md5' ]:
-- 
1.7.1




More information about the Spacewalk-list mailing list