1515
1616from Acquisition import aq_base
1717from Products .ZenModel .ZenPack import ZenPack as ZenPackBase
18+ from .DiffSaver import DiffSaver
1819from ..helpers .Dumper import Dumper
1920from ..helpers .ZenPackLibLog import ZenPackLibLog , new_log
2021from Products .ZenEvents import ZenEventClasses
2122
2223LOG = new_log ('zpl.ZenPack' )
24+ DiffSaver = DiffSaver (LOG )
2325LOG .setLevel ('INFO' )
2426ZenPackLibLog .enable_log_stderr (LOG )
2527
@@ -61,14 +63,15 @@ def _buildDeviceRelations(self, app, batch=10):
6163 def install (self , app ):
6264 self .createZProperties (app )
6365 self .create_device_classes (app )
66+ DiffSaver .initZPDiffDir (self )
6467
6568 # Load objects.xml now
6669 super (ZenPack , self ).install (app )
6770 if self .NEW_COMPONENT_TYPES :
6871 self .LOG .info ('Adding {} relationships to existing devices' .format (self .id ))
6972 self ._buildDeviceRelations (app )
7073
71- # load monitoring templates
74+ # Load monitoring templates
7275 for dcname , dcspec in self .device_classes .iteritems ():
7376 dcspecparam = self ._v_specparams .device_classes .get (dcname )
7477 deviceclass = dcspec .get_organizer (app .zport .dmd )
@@ -77,6 +80,9 @@ def install(self, app):
7780 mtspecparam = dcspecparam .templates .get (mtname )
7881 self .update_object (app , deviceclass , 'rrdTemplates' , mtname , mtspec , mtspecparam )
7982
83+ # Remove ZP diff folder if it's empty
84+ DiffSaver .remEmtyDir ()
85+
8086 # Load event classes
8187 for ecname , ecspec in self .event_classes .iteritems ():
8288 ec_org = ecspec .create_organizer (app .zport .dmd )
@@ -199,12 +205,7 @@ def check_diff(self, app, parent, relname, object, spec, specparam):
199205 time_str = time .strftime ("%Y%m%d%H%M" , time .localtime ())
200206 preupgrade_id = "{}-preupgrade-{}" .format (object .id , time_str )
201207 self .move_object (parent , relname , object .id , preupgrade_id )
202- LOG .info ("Existing object {}/{} differs from "
203- "the newer version included with the {} ZenPack. "
204- "The existing object will be "
205- "backed up to '{}'. Please review and reconcile any "
206- "local changes before deleting the backup: \n {}" .format (
207- parent .getDmdKey (), spec .name , self .id , preupgrade_id , diff ))
208+ DiffSaver .saveDiff (self , parent , spec , preupgrade_id , diff )
208209 return True
209210
210211 def get_object (self , parent , relname , object_id ):
0 commit comments