788
788
self.handle_default('VM_SHARE_CREATED', share_id)
789
789
self.dbus_iface.shares.emit_new_share(share_id)
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)
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)
791
801
def handle_VM_VOLUME_DELETED(self, volume):
792
802
"""Handle VM_VOLUME_DELETED event.
804
814
"volume_id=%r as it's not a share or UDF", volume.id)
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)
810
820
volume = self.dbus_iface.volume_manager.get_volume(volume_id)
1131
1141
str(share_id)))
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)
1140
self.vm.delete_volume(str(share_id))
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))
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:
1147
1155
logger.exception('Error while deleting share: %r', share_id)
1148
1156
self.ShareDeleteError({'volume_id':share_id}, str(e))
1157
# propagate the error
1151
1160
@dbus.service.signal(DBUS_IFACE_SHARES_NAME,
1152
1161
signature='a{ss}')