Package ZenRelations :: Module ExportRM
[hide private]
[frames] | no frames]

Source Code for Module ZenRelations.ExportRM

  1  ########################################################################### 
  2  # 
  3  # This program is part of Zenoss Core, an open source monitoring platform. 
  4  # Copyright (C) 2007, Zenoss Inc. 
  5  # 
  6  # This program is free software; you can redistribute it and/or modify it 
  7  # under the terms of the GNU General Public License version 2 as published by 
  8  # the Free Software Foundation. 
  9  # 
 10  # For complete information please visit: http://www.zenoss.com/oss/ 
 11  # 
 12  ########################################################################### 
 13   
 14  __doc__="""ExportRM 
 15   
 16  Export RelationshipManager objects from a Zope database 
 17  """ 
 18   
 19  import sys 
 20  import datetime 
 21   
 22  import Globals 
 23   
 24  from Products.ZenUtils.ZCmdBase import ZCmdBase 
 25   
26 -class ExportRM(ZCmdBase):
27 """ 28 Wrapper class around exportXml() to create XML exports of relations. 29 """ 30
31 - def __init__(self):
32 """ 33 Initializer that creates an output file, or if nothing is specified 34 with the command-line option --outfile, sends to stdout. 35 """ 36 ZCmdBase.__init__(self) 37 if not self.options.outfile: 38 self.outfile = sys.stdout 39 else: 40 self.outfile = open(self.options.outfile, 'w')
41 42 43
44 - def buildOptions(self):
45 """ 46 Command-line options setup 47 """ 48 ZCmdBase.buildOptions(self) 49 50 self.parser.add_option('-o', '--outfile', 51 dest="outfile", 52 help="Output file for exporting XML objects. Default is stdout") 53 54 self.parser.add_option('--ignore', action="append", 55 dest="ignorerels", default=[], 56 help="Relations that should be ignored. Every relation to" + \ 57 " ignore must be specified with a separate --ignorerels option." )
58 59
60 - def getVersion(self):
61 """ 62 Gather our current version information 63 64 @return: Zenoss version information 65 @rtype: string 66 """ 67 from Products.ZenModel.ZenossInfo import ZenossInfo 68 zinfo = ZenossInfo('') 69 return str(zinfo.getZenossVersion())
70 71
72 - def getServerName(self):
73 """ 74 Gather our Zenoss server name 75 76 @return: Zenoss server name 77 @rtype: string 78 """ 79 import socket 80 return socket.gethostname()
81 82
83 - def export(self, root=None):
84 """ 85 Create XML header and then call exportXml() for all objects starting at root. 86 87 @param root: DMD object root 88 @type root: object 89 """ 90 91 if not root: 92 root = self.dataroot 93 94 if not hasattr(root, "exportXml"): 95 print "ERROR: Root object for %s is not exportable (exportXml not found)" % root 96 sys.exit(1) 97 98 export_date = datetime.datetime.now() 99 version = self.getVersion() 100 server = self.getServerName() 101 102 # TODO: When the DTD gets created, add the reference here 103 self.outfile.write( """<?xml version="1.0" encoding="ISO-8859-1" ?> 104 105 <!-- 106 Zenoss RelationshipManager export completed on %s 107 108 Use ImportRM to import this file. 109 110 For more information about Zenoss, go to http://www.zenoss.com 111 --> 112 113 <objects version="%s" export_date="%s" zenoss_server="%s" >\n""" % \ 114 ( export_date, version, export_date, server )) 115 116 117 # Pass off all the hard work to the objects 118 root.exportXml(self.outfile, self.options.ignorerels, True) 119 120 # Write the ending element 121 self.outfile.write( "</objects>\n" )
122 123 124 if __name__ == '__main__': 125 ex = ExportRM() 126 ex.export() 127