~facundo/ubuntuone-client/lr-dont-delete-partial-nopartialfile

« back to all changes in this revision

Viewing changes to ubuntuone/syncdaemon/dbus_interface.py

  • Committer: Tarmac
  • Author(s): guillermo.gonzalez at canonical
  • Date: 2010-09-24 08:44:39 UTC
  • mfrom: (716.3.5 fix-645519)
  • Revision ID: tarmac-20100924084439-3mdg6qr39r5jvhvz
Fix delete_share DBus method to actually delete shares

Show diffs side-by-side

added added

removed removed

Lines of Context:
788
788
        self.handle_default('VM_SHARE_CREATED', share_id)
789
789
        self.dbus_iface.shares.emit_new_share(share_id)
790
790
 
 
791
    def handle_VM_SHARE_DELETED(self, share):
 
792
        """Handle VM_SHARE_DELETED event, emit NewShare event."""
 
793
        self.handle_default('VM_SHARE_DELETED', getattr(share, 'id', share))
 
794
        self.dbus_iface.shares.emit_share_changed('deleted', share)
 
795
 
 
796
    def handle_VM_SHARE_DELETE_ERROR(self, share_id, error):
 
797
        """Handle VM_DELETE_SHARE_ERROR event, emit ShareCreateError signal."""
 
798
        self.handle_default('VM_SHARE_DELETE_ERROR', share_id, error)
 
799
        self.dbus_iface.shares.ShareDeleteError(dict(volume_id=share_id), error)
 
800
 
791
801
    def handle_VM_VOLUME_DELETED(self, volume):
792
802
        """Handle VM_VOLUME_DELETED event.
793
803
 
804
814
                     "volume_id=%r as it's not a share or UDF", volume.id)
805
815
 
806
816
    def handle_VM_VOLUME_DELETE_ERROR(self, volume_id, error):
807
 
        """Handle VM_SHARE_DELETED event, emit ShareDeleted event."""
 
817
        """Handle VM_VOLUME_DELETE_ERROR event, emit ShareDeleted event."""
808
818
        self.handle_default('VM_VOLUME_DELETE_ERROR', volume_id, error)
809
819
        try:
810
820
            volume = self.dbus_iface.volume_manager.get_volume(volume_id)
1131
1141
                                     str(share_id)))
1132
1142
 
1133
1143
    @dbus.service.method(DBUS_IFACE_SHARES_NAME,
1134
 
                         in_signature='s', out_signature='',
1135
 
                         async_callbacks=('reply_handler', 'error_handler'))
1136
 
    def delete_share(self, share_id, reply_handler=None, error_handler=None):
1137
 
        """Delete a Share."""
 
1144
                         in_signature='s', out_signature='')
 
1145
    def delete_share(self, share_id):
 
1146
        """Delete a Share, both kinds: "to me" and "from me"."""
1138
1147
        logger.debug('delete_share: %r', share_id)
1139
1148
        try:
1140
 
            self.vm.delete_volume(str(share_id))
1141
 
            reply_handler()
1142
 
        except VolumeDoesNotExist, e:
1143
 
            logger.info('delete_share: share %r does not exist.', share_id)
1144
 
            self.ShareDeleteError({'volume_id':share_id}, str(e))
 
1149
            try:
 
1150
                self.vm.delete_volume(str(share_id))
 
1151
            except VolumeDoesNotExist:
 
1152
                # isn't a volume! it might be a "share from me (a.k.a shared)"
 
1153
                self.vm.delete_share(str(share_id))
1145
1154
        except Exception, e:
1146
 
            error_handler(e)
1147
1155
            logger.exception('Error while deleting share: %r', share_id)
1148
1156
            self.ShareDeleteError({'volume_id':share_id}, str(e))
1149
 
 
 
1157
            # propagate the error
 
1158
            raise
1150
1159
 
1151
1160
    @dbus.service.signal(DBUS_IFACE_SHARES_NAME,
1152
1161
                         signature='a{ss}')