def _refresh_and_reload(request): try: refresh_afp_config(list(NetatalkShare.objects.all())) return systemctl('netatalk', 'reload-or-restart') except Exception as e: e_msg = ('Failed to reload Netatalk server. Exception: %s' % e.__str__()) handle_exception(Exception(e_msg), request)
def _refresh_and_reload(request): try: refresh_afp_config(list(NetatalkShare.objects.all())) return systemctl('netatalk', 'reload') except Exception, e: logger.exception(e) e_msg = ('System error occured while reloading Netatalk server') handle_exception(Exception(e_msg), request)
def post(self, request): if ('shares' not in request.data): e_msg = 'Must provide share names.' handle_exception(Exception(e_msg), request) shares = [validate_share(s, request) for s in request.data['shares']] description = request.data.get('description', '') if (description == ''): description = self.def_description time_machine = request.data.get('time_machine', 'yes') if (time_machine != 'yes' and time_machine != 'no'): e_msg = ('Time_machine must be yes or no. ' 'Not ({}).').format(time_machine) handle_exception(Exception(e_msg), request) for share in shares: if (NetatalkShare.objects.filter(share=share).exists()): e_msg = ('Share ({}) is already exported ' 'via AFP.').format(share.name) handle_exception(Exception(e_msg), request) try: for share in shares: mnt_pt = ('%s%s' % (settings.MNT_PT, share.name)) cur_description = '%s' % share.name #cur_description = '%s %s' % (share.name, description) if (len(shares) == 1 and description != self.def_description and share.name == ''): cur_description = description afpo = NetatalkShare(share=share, path=mnt_pt, description=cur_description, time_machine=time_machine) afpo.save() if not share.is_mounted: mount_share(share, mnt_pt) refresh_afp_config(list(NetatalkShare.objects.all())) systemctl('netatalk', 'reload-or-restart') return Response() except RockStorAPIException: raise except Exception as e: handle_exception(e, request)
def post(self, request): if ('shares' not in request.data): e_msg = ('Must provide share names') handle_exception(Exception(e_msg), request) shares = [validate_share(s, request) for s in request.data['shares']] description = request.data.get('description', '') if (description == ''): description = self.def_description time_machine = request.data.get('time_machine', 'yes') if (time_machine != 'yes' and time_machine != 'no'): e_msg = ('time_machine must be yes or now. not %s' % time_machine) handle_exception(Exception(e_msg), request) for share in shares: if (NetatalkShare.objects.filter(share=share).exists()): e_msg = ('Share(%s) is already exported via AFP' % share.name) handle_exception(Exception(e_msg), request) try: for share in shares: mnt_pt = ('%s%s' % (settings.MNT_PT, share.name)) cur_description = '%s %s' % (share.name, description) if (len(shares) == 1 and description != self.def_description): cur_description = description afpo = NetatalkShare(share=share, path=mnt_pt, description=cur_description, time_machine=time_machine) afpo.save() if (not is_share_mounted(share.name)): pool_device = Disk.objects.filter(pool=share.pool)[0].name mount_share(share, pool_device, mnt_pt) refresh_afp_config(list(NetatalkShare.objects.all())) systemctl('netatalk', 'reload') return Response() except RockStorAPIException: raise except Exception, e: handle_exception(e, request)
def refresh_afp(): refresh_afp_config(list(NetatalkShare.objects.all())) systemctl('netatalk', 'reload-or-restart')