1
2
3
4
5
6
7
8
9
10
11 __doc__="""ExportRM
12
13 Export RelationshipManager objects from a Zope database
14 """
15
16 import sys
17 import datetime
18
19 import Globals
20
21 from Products.ZenUtils.ZCmdBase import ZCmdBase
22
24 """
25 Wrapper class around exportXml() to create XML exports of relations.
26 """
27
29 """
30 Initializer that creates an output file, or if nothing is specified
31 with the command-line option --outfile, sends to stdout.
32 """
33 ZCmdBase.__init__(self)
34 if not self.options.outfile:
35 self.outfile = sys.stdout
36 else:
37 self.outfile = open(self.options.outfile, 'w')
38
39
40
42 """
43 Command-line options setup
44 """
45 ZCmdBase.buildOptions(self)
46
47 self.parser.add_option('-o', '--outfile',
48 dest="outfile",
49 help="Output file for exporting XML objects. Default is stdout")
50
51 self.parser.add_option('--ignore', action="append",
52 dest="ignorerels", default=[],
53 help="Relations that should be ignored. Every relation to" + \
54 " ignore must be specified with a separate --ignorerels option." )
55
56
67
68
70 """
71 Gather our Zenoss server name
72
73 @return: Zenoss server name
74 @rtype: string
75 """
76 import socket
77 return socket.gethostname()
78
79
81 """
82 Create XML header and then call exportXml() for all objects starting at root.
83
84 @param root: DMD object root
85 @type root: object
86 """
87
88 if not root:
89 root = self.dataroot
90
91 if not hasattr(root, "exportXml"):
92 print "ERROR: Root object for %s is not exportable (exportXml not found)" % root
93 sys.exit(1)
94
95 export_date = datetime.datetime.now()
96 version = self.getVersion()
97 server = self.getServerName()
98
99
100 self.outfile.write( """<?xml version="1.0" encoding="ISO-8859-1" ?>
101
102 <!--
103 Zenoss RelationshipManager export completed on %s
104
105 Use ImportRM to import this file.
106
107 For more information about Zenoss, go to http://www.zenoss.com
108 -->
109
110 <objects version="%s" export_date="%s" zenoss_server="%s" >\n""" % \
111 ( export_date, version, export_date, server ))
112
113
114
115 root.exportXml(self.outfile, self.options.ignorerels, True)
116
117
118 self.outfile.write( "</objects>\n" )
119
120
121 if __name__ == '__main__':
122 ex = ExportRM()
123 ex.export()
124