-
Notifications
You must be signed in to change notification settings - Fork 13
/
ChangeLog
962 lines (787 loc) · 42.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
2011-07-29 Erwann Chenede - <[email protected]>
* var/*: moved to lib for 6939144
* VERSION: bumped to 0.2.99
2011-06-24 Erwann Chenede - <[email protected]>
* usr/share/time-slider/lib/time_slider/zfs.py:
fix for d.o.o 18302, 7046724. Fix by Julian Wiesener
2011-04-27 Erwann Chenede - <[email protected]>
* VERSION: Bump to 0.2.98
* usr/share/time-slider/lib/time_slider/applet.py
usr/share/time-slider/lib/time_slider/deletegui.py
usr/share/time-slider/lib/time_slider/setupgui.py
usr/share/time-slider/lib/time_slider/snapnowui.py
usr/share/time-slider/lib/time_slider/timesliderd.py :
Fix for 7038498 removed Primary Administrator references
* usr/share/time-slider/lib/time_slider/util.py
usr/share/time-slider/lib/time_slider/zfs.py :
Fix for 6996354 gracefully handle snapshot failure
2010-07-29 Niall Power - <[email protected]>
* VERSION: Bump to 0.2.97
2010-07-08 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py:
Fix typo when raising exception. Defect #16361
RunTimeError -> RuntimeError
2010-07-05 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/setupgui.py:
Don't set filesystem tree view size request based on
number of filesystems: Doesn't scale well. Set fixed
initial size instead. Fixes defect #16319
Correct misspellings of "writable and "administrator".
Fixes defect #16388
* usr/share/time-slider/lib/time_slider/zfs.py:
Check returned value of bisect.bisect_left() is within
index range of list before trying to dereference it and
causing IndexError exceptions. Fixes defect #16377.
Thanks to Tim Foster for this fix.
2010-06-16 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Remove accidental clobbering of tempSchedule list so
that non-archived backups can be expired as per normal
schedule retention rules. Opensolaris defect #16280
2010-06-04 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py:
Register menu callback in Note class instantiation to
avoid multiple registration of same callback.
2010-05-24 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/setupgui.py:
Fix minor function spelling typo
2010-05-24 Niall Power - <[email protected]>
* usr/share/time-slider/glade/time-slider-setup.glade:
Replace GtkFileChooser combo widget with standard
GtkComboBox
* usr/share/time-slider/lib/time_slider/applet.py:
User path_tol_volume() from util library instead of
private copy
* usr/share/time-slider/lib/time_slider/setupgui.py:
Replace standard GtkFileChooser logic with custom combo
box implementation that is more tailored towards selecting
a backup device rather than a generic path. Is able to
handle an offline/unmounted previously configured backup
device gracefully (impossible with stock widget). Doesn't
show meaningless shortcuts like Home, Documents, etc. either
Cleanup of code, renamed variables to use camel case and
made unnecessarily public class variables private.
Changed order of target validation tests to check if the
device supports posix style links before checking if it's
empty. Means user doesn't have to delete everything on a
PCFS/FAT32 device only then to find out it's still unsuitable.
* usr/share/time-slider/lib/time_slider/util.py: Move previously
private function path_to_volume(path) here so it can be shared.
2010-05-14 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py:
Use icon list hinted by gio.Volume instead of hardcoded
harddisk icon when possible when displaying notifications.
Makes icon more context specific to type of backup device.
2010-05-14 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py:
Determine volume name of rsync target if available and
display that instead of the raw mount point in
notifications. More user friendly.
2010-05-14 Erwann Chenede - <[email protected]>
* usr/share/time-slider/glade/time-slider-delete.glade:
Added Type combobox
* usr/share/time-slider/lib/plugin/pluginsmf.py:
fix import to call this class from a non standard
location
* usr/share/time-slider/lib/time_slider/deletegui.py:
implemented rsync backup visualization and deletion
* usr/share/time-slider/lib/time_slider/zfs.py:
renamed member function destroy_snapshot to destroy
to reflect allow polymorphic call in deletegui.py
as the list of backup to delete can now be snapshots
or rsync backups.
* usr/share/time-slider/lib/time_slider/timesliderd.py:
propagated member function destroy name change.
2010-05-14 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Fix list ValueError in list_pending_snapshots() caused
when rsync plugin is enabled but no fileystems are
selected for backup. Check that zfs returns something
more than a blank in such cases.
2010-05-14 Niall Power - <[email protected]>
* usr/share/time-slider/glade/time-slider-setup.glade:
Fix resizing issue that prevented list view from expanding
to occupy all extra space when window gets vertically
extended.
2010-05-14 Niall Power - <[email protected]>
* etc/dbus-1/system.d/time-slider.conf:
Add service and policy definitions for TimSlider.config
service.
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Deal with backup device being mounted under variable
removable media mount points if not found in it's expected
location. Find and validate alternate mount points.
* usr/share/time-slider/lib/time_slider/applet.py:
Refactored to allow more modular notification management.
Improved rsync device monitoring by implementing both gio.File
and gio.Volume monitors so we can track mounting/unmounting of
static mounts like nfs/zfs and variable mount points for
hotpluggable devices. Validate rsync target is correct using
SMF configuration key. Listen to TimeSlider.Config D-Bus events
and refresh configuration when D-Bus notification is received.
Add menu item to enable launching of setup GUI from the applet.
* usr/share/time-slider/lib/time_slider/dbussvc.py:
Add class and method definition for TimeSlider Config service
notifications.
* usr/share/time-slider/lib/time_slider/setupgui.py:
Register with system D-Bus and send notification of changes
to time-slider and rsync plugin services so the applet can
refresh.
2010-05-13 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Fix list IndexError exception caused by looking
for non-existent backups on an empty device.
2010-05-11 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Tweak the space management of the rsync device for better
performance:
- don't scan for deleteables unless the device starts to
exceed threshhold capacity.
- Rescan capacity periodically during rsync backup thread
lifecycle and rescan for deleteable backups only if
device exceeds threshold capacity level.
2010-05-11 Niall Power - <[email protected]>
* var/svc/manifest/system/filesystem/auto-snapshot.xml:
Update service bundle name and version number to
SUNWtime-slider and 0.2.96 respectively.
* var/svc/manifest/application/time-slider-plugin.xml:
Add 2 new properties to define cleanup threshhold level of
rsync backup device and verbosity of rsync output for
debugging purposes.
* usr/share/time-slider/lib/time_slider/util.py: Adjust
signature of util.debug() to make the verbose argument
mandatory instead of automatic.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py:
Add 2 new methods to retrieve cleanup threshhold and rsync
verbosity properties from the rsync SMF service instance.
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Cleanup variable naming, making class private variables
actually private using leading "_" character.
Rename RsyncBackup class to RsyncProcess to me more descriptive.
Add support for rsync verbosity in RsyncProcess class.
Implement better cleanup and space management mechanism:
- Removes old backups in parallel to new rsync backups running
in a separate thread if space falls below threshhold level.
- Identifies what backups can and can't be deleted for a given
new rsync backup based on age and number of backups left for
the associated filesystem.
- Cleanup threshhold tuneable via SMF atic.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py:
Add 2 new methods to retrieve cleanup threshhold and rsync
verbosity properties from the rsync SMF service instance.
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Add check to make sure config key on target device matches that
stored in SMF before commencing backups.
Cleanup variable naming, making class private variables
actually private using leading "_" character.
Rename RsyncBackup class to RsyncProcess to me more descriptive.
Add support for rsync verbosity in RsyncProcess class.
Implement better cleanup and space management mechanism:
- Removes old backups in parallel to new rsync backups running
in a separate thread if space falls below threshhold level.
Avoids having to make rough, inaccurate guesses about size
required for new backups because it responds in real time.
- Identifies what backups can and can't be deleted for a given
new rsync backup based on age and number of backups left for
the associated filesystem.
- Cleanup threshhold tuneable via SMF.
- Doesn't try to backup snapshots older than what's already on
the backup device if device is almost full.
2010-05-05 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Redesigned queue management and backlog mechanism. Backs up
most recent snapshot set first, then works backwards through
the queue. Stops backup mechanism falling too far behind while
still allowing backup of older snapshots to take place if
time and space permit.
Enhancements to filesystem layout of backups - added seperate
folders for partial transfers, log files, trash folder and lock
files. Added file locking mechanism to prevent deletion by other
tools of backups in use (eg during incremental backups).
Added trash mechanism, replaces in place deletion of snapshots
which messes up directory mtimes and incremental backups.
Instead, expired backups are moved to a .trash folder and a new
method: empty_trash_folders() cleans it up after before starting
the next snapshot set backup.
Fix bug in list_pending_snapshots() where ctime of snapshots was
returned as a string instead of a long.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py: Add new
filesystem suffix definitions for partial backups, trash
folders, backup lock files and backup log files.
2010-05-03 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py:
Determine if <zpool/remedial-cleanup> SMF property is set to true.
Do not perform remedial cleanups if it's value is false.
* usr/share/time-slider/lib/time_slider/timeslidersmf.py:
Add new method: get_remedial_cleanup() to indicate the value of
property <zpool/remedial-cleanup>
* var/svc/manifest/application/time-slider.xml:
Add new SMF property: <zpool/remedial-cleanup> as boolean with
default value of 'true'. Indicates that time-sliderd should
perform remedial cleanups when snapshotted pool runs low on
space.
2010-05-03 Niall Power - <[email protected]>
* Makefile:
Install/uninstall time-slider.desktop into
$(DESTDIR)/usr/share/applications/
2010-05-02 Niall Power - <[email protected]>
* lib/svc/method/time-slider:
Remove any legacy zfs-auto-snapshot cron jobs in
zfssnap's crontab that may not have been removed
if the old auto-snapshot services were not stopped
cleanly.
2010-05-02 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py:
Fix incorrect invocation of util.debug() that caused
unconditional verbose output.
2010-05-02 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py:
Fix small typo in monthly calculation.
2010-05-02 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Instantiate RsyncBackup objects with verbose flag
passed through. Remove "--progress" argument from
rsync and add "-vv" argument instead if verbose
flag is set.
2010-05-01 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/plugin.py: Fix some
incorrect invocations that didn't pass verbose
parameter (and were therefore no-ops)
* usr/share/time-slider/lib/time_slider/timesliderd.py:
Fix monthly period calculation. Now handles period
increments > 12 months and period increments that
land on december (originally logged as bugster
CR #6904417)
2010-05-01 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/setupgui.py:
Cache all GUI configuration values at startup and
use them later to compare changes in configuration
state. Only apply the minimum set of configuration
changes necessary instead of previous method of
blindly applying everything, even if unchanged.
Configuration is much much faster now, especially
for minor configuration changes.
Recognise previously configured backup devices and
ask the user if they want to start using it again
instead of rejecting it as belonging to another
system.
Remove duplicate import of os.path modules.
2010-04-28 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Add removal of partial backups missing a matching
snapshot in the backup queue. They are zombies.
When catching an rsync exception, change directory
to "/" so that pfexec doesn't freak out when trying
to release the snapshot. pfexec bails out when it
tries to add cwd to it's path if cwd is non-existent
which can be the case if the backup device suddenly
goes offline.
2010-04-27 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Remember to also delete log files when deleting backups.
2010-04-27 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Exit if effective UID of process is not 0 (root)
2010-04-27 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py:
Send rsync loggint to individual log files on the backup
device. Delete log files when corresponding backup gets
deleted.
Create rsync backups in a temporary directory first and
move to permanent location when completed. Prevents
incomplete backups appearing in backup view in Nautilus.
Also use "--inplace" rsync option to allow resumption of
partial (interrupted) backups.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py:
Add shared key get/set methods for rsync SMF instance.
Use new "set_string_prop" Smf class method for setting
rsync target directory so that path names containing
spaces can be correctly set. Conversely, strip out '\ '
space formatting characters returned by SMF in
get_target_dir() method.
* usr/share/time-slider/lib/plugin/rsync/trigger.py:
Don't tag new snapshots whose filesystems are not mounted
Prevents piling up of snapshots from unmounted BEs. Might
be best to make this behaviour configurable via SMF.
* usr/share/time-slider/lib/time_slider/setupgui.py:
Clean up OK button clicked callback by farming out several
validation checks to separate methods. Add rsync config
checking method to chek configuration/selection of rsync
target device. Implement shared key checking to validate/
identify pre-configured backup devices. Rejects devices
configured for use on other systems. Add checks to ensure
target device is writable by root and supports hard links
as required for rsync incremental backups. Add a random
key generation function. Perform basic space checking on
rsync target device to see if it's big enough.
* usr/share/time-slider/lib/time_slider/smf.py:
Implement set_string_prop() method that allows white space
string characters.
* var/svc/manifest/application/time-slider-plugin.xml:
Remove rsync plugin's property override of
<plugin/trigger_on> and inherit defaults instead. Backing
up frequent snapshots caused near constant backup disk
churn.
2010-04-16 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/zfs.py: Fix bug in
method "create_auto_snapshot_set() where it would skip
the entire pool if the root of the pool was tagged and
all datastets under the root inherited from it. Also,
use sorted lists and binary searching to speed up the
operation and avoid making repeated unnecessary calls
to Dataset.list_children() (the data is already provided)
2010-04-15 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py: Clean up
dangling holds on snapshots left by abnormally terminated
rsync transfers from previous invocations. Also, release
snapshot holds if an Rsync exception is caught during
transfer. Allows time-sliderd to delete snapshots when they
naturally expire.
2010-04-13 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/setupgui.py:
Fix broken target directory retrieval from FileChooser button
2010-04-13 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py: Create a
RsyncBackup class to run rsync backup commands in a
separate thread. Define Rsync exception clases and map
to expected rsync exit codes.
Modify toplevel backup path for backups to begin with:
<SMF defined target dir>/TIMESLIDER/<nodename>/
Deal with rsync exceptions raised and place into maintenance
state if non recoverable.
Try to recover space on target directory (work in progress)
Add debugging and error logging output.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py: define
backup RSYNCDIRPREFIX to "TIMESLIDER".
* usr/share/time-slider/lib/time_slider/applet.py:
Use new backup path format as described above.
* usr/share/time-slider/lib/time_slider/setupgui.py:
Use new backup path format as described above.
* usr/share/time-slider/lib/time_slider/util.py:
Add general purpose syslog wrapper function.
* var/svc/manifest/application/time-slider-plugin.xml:
remove accidental definition of <plugin/target_dir>
Set to empty string value "" instead of a directory on my
own system. Doh.
2010-04-01 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py: insert a
'h' character between hour and minute values of auto snapshot
labels as a subsitute for the previously removed ':' character
used in time stamps. Makes life easier for nautilus component
and plays nicely with strptime()
2010-04-01 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py: gio FileMonitor
events are inconsistent between UFS/ZFS filesystem mounting.
Ignore event type from gio FileMonitor and verify backup target
status manually using os.stat()
2010-04-01 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py: Improve string
formatting on notifications and tooltips. Stop the status icon
blinking once the notification has been closed.
* usr/share/time-slider/lib/time_slider/setupgui.py: Forgot to
connect rsync folder selection to rsync SMF instance
configuration. Added. Also use get_current_folder() instead of
get_filename() to get correct folder from FileChooserButton
widget.
2010-03-31 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/applet.py: Restrict manual
synchronisation menu item to priviliged users only (root or
users assigned Primary Administrator profile). Also, don't
bother popping up a right click menu if it's empty.
2010-03-31 Niall Power - <[email protected]>
* usr/share/time-slider/lib/plugin/rsync/backup.py: Implement cleanup
of expired backups on rsync target directory. Uses same rules as
time-slider as defined by each auto-snapshot schedule's SMF instance
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py: Add a method to
return the list of archived schedules (ie. ones that don't get
cleaned according to the normal schedule retention rules)
* usr/share/time-slider/lib/time_slider/applet.py: add a
'Synchronize Now' menu item to the applet. Added gio based file
monitoring to keep track of when the rsync backup target directory
is mounted/unmounted and adjust menu sensitivty accordingly.
* usr/share/time-slider/lib/time_slider/autosnapsmf.py: Define
SNAPLABELPREFIX as a constant for snapshot label names
* usr/share/time-slider/lib/time_slider/setupgui.py: Modify RBAC
rules to ensure that setup GUI is run with euid of root which is
necessary for validation and initialisation of rsync backup target
directory
* usr/share/time-slider/lib/time_slider/timesliderd.py: use
SNAPLABELPREFIX constant instead of local multiply defined values.
* var/svc/manifest/application/time-slider-plugin.xml: Override
"plugin/trigger_on" value in rsync plugin manifest. Add a new
property "rsync/archived_schedules" to define snapshot schedules
that are archived as long as possible and not purged according
to the normal schule retention rules.
2010-03-25 Niall Power - <[email protected]>
* etc/dbus-1/system.d/time-slider.conf: add policies for
rsync plugin's dbus service and methods.
* usr/share/time-slider/lib/plugin/rsync/backup.py: restructure script
to perform backups via a Gobject mainloop which is necessary to allow
it to send dbus notifications correctly. Adjust backup target dir
to use a rsync plugin specific subdirectory on the target dir
(.time-slider/rsync) - prevents borkage of mount points with
unmounted filesystems. Use "-a" option with rsync command which
covers all the desired arguments fo our rsync usage case (archival)
Add dbus method invocations. General cleanup and removal of commented
out code. Use lockfile to prevent multiple instances running at once.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py: Add definitions
for backup subdirectory and filesystem property tag constants.
* usr/share/time-slider/lib/plugin/rsync/trigger.py: Use constants as
defined in rsyncsmf.py
* usr/share/time-slider/lib/time_slider/applet.py: Incorporate new
RsyncNote class and other pieces from Krishnan Parthasarathi. Thanks
Krishan. Added signal handlers and tooltips/popups for dbus events
sent from rsync plugin.
* usr/share/time-slider/lib/time_slider/dbussvc.py: New dbus signal
definitions added, including a few from Krishnan.
* usr/share/time-slider/lib/time_slider/setupgui.py: Perform validation
on target directory for rsync. Not exhaustive yet. Checks that target
directory isn't on a file system or pool that's been selected for
automatic snapshots.
2010-03-11 Niall Power - <[email protected]>
Add rsync plugin (WORK IN PROGRESS), restructure SMF related code
and restructure file/directory layout to provide seperate
subdirectories for plugins.
* Makefile: Add/remove files to (un)install rules.
* usr/lib/time-sliderd: Fix script invocation to invoke python2.6
explicitly (ie. do not use /usr/bin/env to source it)
* usr/share/time-slider/glade/time-slider-setup.glade: Add in UI
features to enable rsync backup configuration
* usr/share/time-slider/lib/time_slider/__init__.py: adjust sys.path
to allow importation from the plugin directory
* usr/share/time-slider/lib/time_slider/autosnapsmf.py: Refactor to
inehrit from the smf base object class (smf.py)
* usr/share/time-slider/lib/time_slider/deletegui.py: Remove import
of smfmanager module.
* usr/share/time-slider/lib/time_slider/setupgui.py: Remove import of
smfmanager module. Implement UI logic and view for rsync
configuration (filechooser, list view check buttons etc.)
Tie in with rsync plugin SMF backend. WORK IN PROGRESS.
* usr/share/time-slider/lib/time_slider/timesliderd.py: Drop use of old
smfmanager class and replace with new smf and timeslidersmf modules
* usr/share/time-slider/lib/time_slider/zfs.py: Misc. cleanups. Define
proper Exception classes for ZFS and ZPool errors and raise them when
appropriate. Old style string based exceptions not supported in python
2.6
* var/svc/manifest/application/time-slider-plugin.xml: Define rsync
plugin SMF instance and properties.
* usr/lib/time-slider-zfssend: Removed. Replaced by:
usr/lib/time-slider/plugins/zfssend/zfssend
* usr/share/time-slider/lib/time_slider/plugin.py: Removed. Replaced by:
usr/share/time-slider/lib/plugin/plugin.py
* usr/share/time-slider/lib/time_slider/zfssend.py: Removed. Replaced by:
usr/share/time-slider/lib/plugin/zfssend/zfssend.py
* lib/svc/method/time-slider-rsync: Added. Starts stops rsync plugin SMF
instance and sets up cron job for rsync-backup script.
* usr/lib/time-slider/plugins/rsync/rsync-backup: Added. Performs
asynchronouse rsync backup of zfs snapshots previously tagged for backup.
WORK IN PROGRESS
* usr/lib/time-slider/plugins/rsync/rsync-trigger: Provides trigger
mechanisem for time-slider to call when snapshots created. Queues up
zfs snapshots for later backup using rsync-backup script.
* usr/lib/time-slider/plugins/zfssend/zfssend: Replacement of
usr/lib/time-slider-zfssend
* usr/share/time-slider/lib/plugin/__init__.py: Added. Initialises new
plugin module
* usr/share/time-slider/lib/plugin/plugin.py: Replacement of:
usr/share/time-slider/lib/time_slider/plugin.py
* usr/share/time-slider/lib/plugin/pluginsmf.py: Added. Defines plugin
SMF class specialised for time-slider plugin SMF instances
* usr/share/time-slider/lib/plugin/rsync/__init__.py: Added. Initialises
new rsync plugin module.
* usr/share/time-slider/lib/plugin/rsync/backup.py: Added. Main code
block for rsync-backup script.
* usr/share/time-slider/lib/plugin/rsync/rsyncsmf.py: Added. Defines
SMF class specialised for rsync plugin SMF instance.
* usr/share/time-slider/lib/plugin/rsync/trigger.py: Added. Main code
block for rsync-trigger script.
* usr/share/time-slider/lib/plugin/zfssend/__init__.py: Added.
Initialises zfssend plugin module.
* usr/share/time-slider/lib/plugin/zfssend/zfssend.py: Replacement for
usr/share/time-slider/lib/time_slider/zfssend.py
* usr/share/time-slider/lib/time_slider/smf.py: Added. Provides cleaner
and more structured base class for generic SMF instances and and is
inherited by timeslidersmf, pluginsmf, rsyncsmf derived classes.
Provides common methods to enable/disable and get/set property values
and refresh and query service state.
* usr/share/time-slider/lib/time_slider/timeslidersmf.py: Defines
SMF class and methods specific to the time-slider SMF instances.
2010-02-04 Niall Power - <[email protected]>
* Makefike: Add lib/svc/method/time-slider-plugin to
install/uninstall rules.
* lib/svc/method/time-slider-plugin: Added.
Provides simple, generic plugin start method.
* var/svc/manifest/application/time-slider-plugin.xml:
Added comments for time-slider-plugin method, advising
that non trivial plugin instances should provide their
own specific methods.
2010-02-03 Niall Power - <[email protected]>
* var/svc/manifest/application/time-slider.xml:
Define new property "zfs/sep". Taken for zfs-auto-snapshot,
allows custom definition of a separator character for snapshot
datestamps that can work on filesystems that previously choked
on the ":" characted such as CIFS, PCFS.
* usr/share/time-slider/lib/time_slider/smfmanager.py: Added new
method to get zfs/sep property.
* usr/share/time-slider/lib/time_slider/timesliderd.py: modify
snapshot creation and listing operations to use the new zfs/sep
property, while maintaining compatibility with old snapshot
datestamps that used the ":" character.
2010-02-02 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/plugin.py:
Fix invalid function call "debug()" should be "util.debug()" when
reporting disabled plugin in PluginManager.refresh()
Missing "()" in method call Plugin.is_running() in Plugin.refresh()
2010-01-26 Niall Power - <[email protected]>
* VERSION: bump to 0.2.96
* Use explicit path: "/usr/bin/python2.6" to reference python interpreter
instead of relying on "/usr/bin/env" to find it.
* Add plugin framework to enable user defined plugins to be executed after
snapshots get taken by time-sliderd. Plugins are based on the SMF service
framework and plugins are defined as instances of the base SMV service:
svc:/application/time-slider/plugin
* Provide a "zfs-send" plugin as a replacement for the zfs-auto-snapshot
provided "backup-save-cmd" property.
* Add util.py to define two commoonly used utility functions: debug/logging
and command spawning. Reduces lines of code and duplication.
* Refactor all python files to use util.run_command() convenience function
where possible.
* Fix a bug where time-sliderd emits warnings and tries to cleanup pools
upon which it creates no snapshots. Also make time-sliderd more descriminating
in general and able to identify snapshots it created from backups of snapshots
it create (via zfs send/receive) by checking for the auto-snapshot property
corresponding to the filesystem/volume of snapshots.
* TODO: SMF code is a bit all over the place and could do with proper stucturing
2009-11-27 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/timesliderd.py: fixed a date
calculation bug whereby a schedule with a period in months next falls
due on December. Was getting incorrectly modulused to 0.
2009-11-04 Niall Power - <[email protected]>
* VERSION: bump to 0.2.95
* Move to python2.6
* Drop dependency on zfs-auto-snapshot methods and implement our own
snapshotting mechanism in the form of time-sliderd
* Add dbus system bus notification and notification applet, replacing
the previous ugly hack of su to logged in user ID and running
notify-send.
* Enhance all .py modules to use python subprocess module when spawning
commands instead of os.popen.
* Add SMF manifest for system/filesystem/auto-snapshot to replace
systems snapshot configuration previously supplied by
zfs-auto-snapshot. Generally compatible but cleaned up by dropping
some of zfs-auto-snapshot's more quirky or deprecated configuration
options.
2009-07-08 Niall Power - <[email protected]>
* VERSION: bump to 0.2.10
* Fix defect 8667 in following source files:
* usr/share/time-slider/lib/time_slider/cleanupmanager.py: Refactor
code to modified zfs.py APIs, remove some dead code, make capacity
checks conditional where possible.
* usr/share/time-slider/lib/time_slider/deletegui.py: minor code
refactoring to match zfs.py API changes.
* usr/share/time-slider/lib/time_slider/setupgui.py: Remove references
to zfscontroller module which has been removed. Uses zfs.py
exclusively now. Refactor for zfs.py changes
* usr/share/time-slider/lib/time_slider/zfscontroller.py: removed.
Very little functionality and nothing that shouldn't be in zfs.py
* usr/share/time-slider/lib/time_slider/zfs/py: New class definition
for "Datasets" which stores all system snapshots, filesystems and
volumes in a cache. Existing Dataset, Filesystem, Snapshot and Volume
class methods now use the global Datasets cache for querying and
listing instead of making zfs(1m) spawned commands.
2009-05-18 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/cleanupmanager.py
Cleanup both Filesystem and Volume snapshots. Fixes d.o.o 8454
* usr/share/time-slider/lib/time_slider/setupgui.py: Prepend private
class methods with "__" in accordance with python coding standards.
* usr/share/time-slider/lib/time_slider/smfmanager.py: Use predefined
macros for ZFS commands instead of hardcoding path in the code.
* usr/share/time-slider/lib/time_slider/zfs.py: Improve object
hierarchy and inheritance tree. Rename some methods for improved
clarity of purpose. Improve method and function documentation.
Add capability to deal with ZFS volumes. Fixes d.o.o 8454 & 8685
2009-05-13 Harry Fu - <[email protected]>
* VERSION: bump to 0.2.9
2009-04-10 Erwann Chenede - <[email protected]>
* /usr/share/time-slider/lib/time_slider/fileversion.py:
used gobject.idle_add instead of gtk.gdk.threads_* fixes
7319
2009-04-09 Erwann Chenede - <[email protected]>
* /usr/share/time-slider/lib/time_slider/fileversion.py:
removed hard dependency on external thumbnailer and meld
fixes #7502
2009-04-07 Niall Power <[email protected]>
* usr/share/time-slider/lib/time_slider/cleanupmanager.py
* usr/share/time-slider/lib/time_slider/deletegui.py
* usr/share/time-slider/lib/time_slider/smfmanager.py
* usr/share/time-slider/lib/time_slider/zfs.py
* usr/share/time-slider/lib/time_slider/zfscontroller.py:
Use macro substitution to specify full paths to all spawned
commands (zfs, zpool, svcadm, svccfg, svcprop, pfexec) so that
commands work independently of user's PATH environment.
Fixes opensolaris defect #7396
2009-03-01 Niall Power <[email protected]>
* VERSION: bump to 0.2.6
* Makefile: Pick up PYTHON environment variable. Enhancement for
fix to 6754650
* usr/share/time-slider/lib/time_slider/setupgui.py: Allow filesystems
to inherit properties from their parent instead of locally tagging
every filesystem with the required property setting.
* usr/share/time-slider/lib/time_slider/zfs.py: Add an "inherit" argument
to Filesystem.commit_state() to allow the fileystem to inherit from
it's parent when setting the auto-snapshot property.
2009-02-19 Takao Fujiwara <[email protected]>
* usr/share/time-slider/lib/time_slider/deletegui.py: updated
the comments because translators are confused it.
* usr/share/time-slider/lib/time_slider/snapnowui.py: updated
the gettext "%s" so that translators can change the oder of "%s".
2009-02-05 Niall Power - <[email protected]>
* VERSION: bump to 0.2.5
* Makefile: don't install .pyc files, but generate them as part
of "install:" rule. Fixes bugster: 6754650
* py-compile.py: Prepend "DESTDIR" to compile python bytecode
within the installed directory tree.
* usr/share/time-slider/lib/time_slider/__init__.pyc: removed
* usr/share/time-slider/lib/time_slider/cleanupmanager.pyc: removed
* usr/share/time-slider/lib/time_slider/deletegui.pyc: removed
* usr/share/time-slider/lib/time_slider/fileversion.pyc: removed
* usr/share/time-slider/lib/time_slider/notification.pyc: removed
* usr/share/time-slider/lib/time_slider/rbac.pyc: removed
* usr/share/time-slider/lib/time_slider/setupgui.pyc: removed
* usr/share/time-slider/lib/time_slider/smfmanager.pyc: removed
* usr/share/time-slider/lib/time_slider/snapnowui.pyc: removed
* usr/share/time-slider/lib/time_slider/zfs.pyc: removed
* usr/share/time-slider/lib/time_slider/zfscontroller.pyc: removed
2009-01-23 Erwann Chenede - <[email protected]>
* VERSION: bump version to 0.2.4
* Makefile : added new files
* usr/lib/time-slider-version
* usr/share/time-slider/glade/time-slider-version.glade
* usr/share/time-slider/lib/time_slider/fileversion.py
* usr/share/time-slider/lib/time_slider/fileversion.pyc :
Initial implementation of the file version explorer app
2009-01-16 Takao Fujiwara <[email protected]>
* po/POTFILES.in: Update with the latest files.
* usr/share/time-slider/glade/time-slider-delete.glade:
* usr/share/time-slider/glade/time-slider-setup.glade:
* usr/share/time-slider/glade/time-slider-snapshot.glade:
Update to remove "translatable" tag for GTK textdomain.
* usr/share/time-slider/lib/time_slider/deletegui.py:
Update to localize date and add the encoding conversion.
* usr/share/time-slider/lib/time_slider/setupgui.py:
Update to localize "legacy".
* usr/share/time-slider/lib/time_slider/snapnowui.py:
Update to add gettext.
2009-01-09 Niall Power - <[email protected]>
* VERSION: bump version to 0.2.3
* usr/share/time-slider/glade/time-slider-delete.glade:
add progress dialog for snapshot scanning feedback
* usr/share/time-slider/lib/time_slider/deletegui.py:
restructure initialisation code and run snapshot scanning in it's
own thread so that feedback can be give to user via a progress dialog
Prevents the app appearing dead when dealing with huge numbers of
snapshots.
2009-01-09 Erwann Chenede - <[email protected]>
* Makefile: added newly introduced file
* usr/share/time-slider/lib/time_slider/snapnowui.py: removed print
2009-01-09 Erwann Chenede - <[email protected]>
* usr/lib/time-slider-snapshot:
* usr/share/time-slider/glade/time-slider-snapshot.glade:
* usr/share/time-slider/lib/time_slider/snapnowui.py:
Initial implementation of the snapshot now dialog
2008-12-17 Niall Power - <[email protected]>
* VERSION: bump version to 0.2.2
* lib/svc/method/time-slider: remove "set -x" command which errantly turns
on debug mode. Fixes bugzilla defect #5067
* usr/share/time-slider/glade/time-slider-setup.glade: Change mnemonic key for
"Custom" radio button from "C" to "u". C is already in use by "Cancel" button.
Fixes bugzilla defect #3986
* usr/share/time-slider/lib/time_slider/setupgui.py: Change error dialog text to
instruct user to consult "svcs -xv" instead of "svcs(1) man page" for more info
when time-slider SMF instance is placed into offline state by SMF.
Fixes bugzilla defect #5804
2008-12-17 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/cleanupmanager.py: Check
ps commmand output before accessing it by catching IndexError
exceptions. Prevents root's mailbox being spammed by cron.
Fixes bugster #6758575
2008-12-12 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/cleanupmanager.py: Implement
destruction of older snapshots since zfs-auto-snapshot only does
snapshot destruction recursively and we break the recursion by
deleting individual snapshots instead of recursive sets.
2008-12-05 Niall Power - <[email protected]>
* usr/share/time-slider/lib/time_slider/setupgui.py
Fixed a patch generation problem when launching time-slider-delete
2008-12-05 Niall Power - <[email protected]>
* VERSION: bumped to 0.2.1
* Makefile: Minor cleanups
* usr/share/time-slider/lib/time_slider/cleanupmanager.py: add
perform_purge method to clean up zero sized snapshots under
safe circumstances so that the system doesn't become cluttered
with too many permanently zero sized snapshots.
Rewrote emercency space makeing cleanup alogorithm in run_cleanup
to be more efficient and spawn far fewer shell commands. No longer
usr/share/time-slider/lib/time_slider/setupgui.py: Change error dialog text to
instruct user to consult "svcs -xv" instead of "svcs(1) man page" for more info
when time-slider SMF instance is placed into offline state by SMF.
Fixes bugzilla defect #5804
does recursive snapshot deletion since the above changes will break
the recursive snapshot chain in most cases and recursive deletion
is now overkill since individual snapshots should be larger in size
and yield larger space savings per snapshot deleted.
Fixed notification bug where notification would happen twice if
gnome-session is launched via dbus-launch.
* usr/share/time-slider/lib/time_slider/deletegui.py: move
__get_cloned_snapshots() method to a public function in zfs.py
* usr/share/time-slider/lib/time_slider/notification.py: fix typo
bug in send_to_desktop() where initial warning level was set to
90000 which broke desktop notification. Should be 0.
* usr/share/time-slider/lib/time_slider/zfs.py: Add new function:
list_cloned_snapshots() to list snapshots that have cloned filesystem
based on them.
2008-12-02 Niall Power - <[email protected]>
* Makefile: Fix install target error that didn't install both glade
files
2008-12-02 Niall Power - <[email protected]>
* VERSION: bumped to 0.2.0
* Makefile: added new files to install and uninstall targets
* data/Makefile: adjusted for renamed .desktop.in file
* usr/share/time-slider/glade/time-slider-setup.glade: Added launch
button for snapshot deletion GUI. Rename window title from
"Time Slider Setup" to "Time Slider Manager"
* usr/share/time-slider/lib/time_slider/setupgui.py: add launch handler
for time-slider-delete
* usr/share/time-slider/lib/time_slider/zfs.py: Add utility functions
for time-slider-delete for listing and creating snapshot objects
* data/time-slider.desktop.in renamed from time-slider-setup.desktop.in
* usr/lib/time-slider-delete: Added new snapshot deleter program to
allow snapshot browsing/deletion.
* usr/share/applications/time-slider.desktop: renamef from
time-slider-setup.desktop
* usr/share/time-slider/glade/time-slider-delete.glade: Added glade UI
file for snapshot delete GUI
* usr/share/time-slider/lib/time_slider/deletegui.py: Added main python
code for listing and deleting snapshots
2008-12-02 Niall Power - <[email protected]>
* py-compile.py: Added to insure pyc files are in sync with
.py sources. Fixes bugster #6754650
* VERSION: Added version file. Bump to 0.1.5
* SUNWgnome-time-slider.spec: removd because spec file is
in spec-files-other repository on opensolaris.org
* Makefile: added "dist" target for creating dist bz2 tarballs
2008-10-23 Erwann Chenede - <[email protected]>
* usr/share/icons/hicolor/16x16/apps/time-slider-setup.png
* usr/share/icons/hicolor/24x24/apps/time-slider-setup.png
* usr/share/icons/hicolor/32x32/apps/time-slider-setup.png
* usr/share/icons/hicolor/36x36/apps/time-slider-setup.png
* usr/share/icons/hicolor/48x48/apps/time-slider-setup.png
* usr/share/icons/hicolor/72x72/apps/time-slider-setup.png :
new icon (4182)
2008-10-20 Takao Fujiwara <[email protected]>
* Makefile: Updated to load po/Makefile and data/Makefile.
* data/Makefile: Added to generate .desktop files.
* data/time-slider-setup.desktop.in: Added for intltool.
* po: Added for intltool.
2008-09-11 Niall Power - <[email protected]>
* Initial import of Time Slider service