From 8f73a862d6868aacc0c09bc2689ef0190407c2cc Mon Sep 17 00:00:00 2001 From: FroggyFlox Date: Sat, 14 Mar 2020 12:18:38 -0400 Subject: [PATCH] First batch of commits to remove AFP/Netatalk --- base-buildout.cfg | 2 +- src/rockstor/scripts/prep_db.py | 1 - src/rockstor/smart_manager/urls/services.py | 4 - src/rockstor/smart_manager/views/__init__.py | 1 - .../smart_manager/views/afp_service.py | 69 - .../storageadmin/fixtures/test_afp.json | 6239 ----------------- src/rockstor/storageadmin/models/__init__.py | 1 - .../storageadmin/models/netatalk_share.py | 48 - src/rockstor/storageadmin/models/share.py | 27 - src/rockstor/storageadmin/serializers.py | 10 +- .../static/storageadmin/js/models/models.js | 10 - .../static/storageadmin/js/router.js | 29 - .../js/templates/afp/add_afp_share.jst | 46 - .../storageadmin/js/templates/afp/afp.jst | 59 - .../js/templates/common/navbar.jst | 1 - .../js/templates/common/sidenav_storage.jst | 1 - .../storageadmin/js/views/add_afp_share.js | 188 - .../static/storageadmin/js/views/afp.js | 198 - src/rockstor/storageadmin/tests/test_afp.py | 202 - src/rockstor/storageadmin/views/__init__.py | 1 - .../storageadmin/views/config_backup.py | 18 +- src/rockstor/storageadmin/views/netatalk.py | 142 - src/rockstor/system/config_backup.py | 1 - src/rockstor/system/services.py | 33 - src/rockstor/urls.py | 4 - 25 files changed, 3 insertions(+), 7332 deletions(-) delete mode 100644 src/rockstor/smart_manager/views/afp_service.py delete mode 100644 src/rockstor/storageadmin/fixtures/test_afp.json delete mode 100644 src/rockstor/storageadmin/models/netatalk_share.py delete mode 100644 src/rockstor/storageadmin/static/storageadmin/js/templates/afp/add_afp_share.jst delete mode 100644 src/rockstor/storageadmin/static/storageadmin/js/templates/afp/afp.jst delete mode 100644 src/rockstor/storageadmin/static/storageadmin/js/views/add_afp_share.js delete mode 100644 src/rockstor/storageadmin/static/storageadmin/js/views/afp.js delete mode 100644 src/rockstor/storageadmin/tests/test_afp.py delete mode 100644 src/rockstor/storageadmin/views/netatalk.py diff --git a/base-buildout.cfg b/base-buildout.cfg index eb58bcaba..597d63bfb 100644 --- a/base-buildout.cfg +++ b/base-buildout.cfg @@ -59,7 +59,7 @@ command = at samba-winbind samba-winbind-clients \ oddjob-mkhomedir pam_krb5 krb5-workstation postgresql \ postgresql-server postgresql-devel kernel-ml btrfs-progs rsync \ - nfs-utils avahi netatalk smartmontools net-tools sos hdparm \ + nfs-utils avahi smartmontools net-tools sos hdparm \ postfix cyrus-sasl-plain yum-cron nano usbutils pciutils shellinabox \ epel-release cryptsetup docker-ce python-distro yum-changelog diff --git a/src/rockstor/scripts/prep_db.py b/src/rockstor/scripts/prep_db.py index 06e84fade..fc5005feb 100644 --- a/src/rockstor/scripts/prep_db.py +++ b/src/rockstor/scripts/prep_db.py @@ -22,7 +22,6 @@ def register_services(): services = { - "AFP": "netatalk", "NFS": "nfs", "Samba": "smb", "NIS": "nis", diff --git a/src/rockstor/smart_manager/urls/services.py b/src/rockstor/smart_manager/urls/services.py index b927be5ec..aa6147d72 100644 --- a/src/rockstor/smart_manager/urls/services.py +++ b/src/rockstor/smart_manager/urls/services.py @@ -18,7 +18,6 @@ from django.conf.urls import patterns, url from smart_manager.views import ( - AFPServiceView, ActiveDirectoryServiceView, BaseServiceView, BootstrapServiceView, @@ -47,9 +46,6 @@ '', # Services url(r'^$', BaseServiceView.as_view()), - url(r'^netatalk$', AFPServiceView.as_view()), - url(r'^netatalk/(?P%s)$' % command_regex, - AFPServiceView.as_view()), url(r'^nis$', NISServiceView.as_view()), url(r'^nis/(?P%s)$' % command_regex, NISServiceView.as_view()), url(r'^smb$', SambaServiceView.as_view()), diff --git a/src/rockstor/smart_manager/views/__init__.py b/src/rockstor/smart_manager/views/__init__.py index c1f1c0635..67e4fadd2 100644 --- a/src/rockstor/smart_manager/views/__init__.py +++ b/src/rockstor/smart_manager/views/__init__.py @@ -45,7 +45,6 @@ from ts_service import TaskSchedulerServiceView # noqa E501 from dc_service import DataCollectorServiceView # noqa E501 from sm_service import ServiceMonitorView # noqa E501 -from afp_service import AFPServiceView # noqa E501 from snmp_service import SNMPServiceView # noqa E501 from docker_service import DockerServiceView # noqa E501 from smartd_service import SMARTDServiceView # noqa E501 diff --git a/src/rockstor/smart_manager/views/afp_service.py b/src/rockstor/smart_manager/views/afp_service.py deleted file mode 100644 index e07472a8c..000000000 --- a/src/rockstor/smart_manager/views/afp_service.py +++ /dev/null @@ -1,69 +0,0 @@ -""" -Copyright (c) 2012-2013 RockStor, Inc. -This file is part of RockStor. - -RockStor is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -RockStor is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from rest_framework.response import Response -from storageadmin.util import handle_exception -from system.services import systemctl -from system.pkg_mgmt import install_pkg -from django.db import transaction -from base_service import BaseServiceDetailView -from contextlib import contextmanager -from storageadmin.exceptions import RockStorAPIException -import os - -import logging -logger = logging.getLogger(__name__) - - -class AFPServiceView(BaseServiceDetailView): - - service_name = 'netatalk' - - @staticmethod - @contextmanager - def _handle_exception(request, msg): - try: - yield - except RockStorAPIException: - raise - except Exception as e: - handle_exception(e, request, msg) - - @transaction.atomic - def post(self, request, command): - """ - execute a command on the service - """ - e_msg = ('Failed to %s AFP service due to system error.' % - command) - with self._handle_exception(request, e_msg): - if (command == 'start'): - if (not os.path.exists('/usr/sbin/afpd')): - install_pkg(self.service_name) - self._switch_afpd(command) - - return Response() - - @classmethod - def _switch_afpd(cls, switch): - if (switch == 'start'): - systemctl(cls.service_name, 'enable') - systemctl(cls.service_name, 'start') - else: - systemctl(cls.service_name, 'disable') - systemctl(cls.service_name, 'stop') diff --git a/src/rockstor/storageadmin/fixtures/test_afp.json b/src/rockstor/storageadmin/fixtures/test_afp.json deleted file mode 100644 index f9f699bef..000000000 --- a/src/rockstor/storageadmin/fixtures/test_afp.json +++ /dev/null @@ -1,6239 +0,0 @@ -[ -{ - "fields": { - "username": "admin", - "first_name": "", - "last_name": "", - "is_active": true, - "is_superuser": false, - "is_staff": false, - "last_login": "2018-03-25T14:49:17.022Z", - "groups": [], - "user_permissions": [], - "password": "pbkdf2_sha256$20000$BcwtQcp041Xl$Haswv9OynQfhUGXehs91tYwPB6xo7b55RvwKrfXxdTM=", - "email": "", - "date_joined": "2018-03-11T15:54:05.635Z" - }, - "model": "auth.user", - "pk": 1 -}, -{ - "fields": { - "expire_date": "2018-04-08T14:49:17.055Z", - "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0=" - }, - "model": "sessions.session", - "pk": "3mh54lniiu1jjwe82p32nne30mb9rgrh" -}, -{ - "fields": { - "expire_date": "2018-04-01T17:26:57.189Z", - "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0=" - }, - "model": "sessions.session", - "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh" -}, -{ - "fields": { - "domain": "example.com", - "name": "example.com" - }, - "model": "sites.site", - "pk": 1 -}, -{ - "fields": { - "raid": "single", - "compression": "no", - "uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808", - "name": "rockstor_install-test", - "mnt_options": null, - "role": "root", - "toc": "2018-03-25T18:58:38.021Z", - "size": 7025459 - }, - "model": "storageadmin.pool", - "pk": 1 -}, -{ - "fields": { - "raid": "raid1", - "compression": "no", - "uuid": "3434a015-3770-4efa-be37-a337d22ac552", - "name": "rock-pool", - "mnt_options": "", - "role": null, - "toc": "2018-03-25T18:59:06.118Z", - "size": 5242880 - }, - "model": "storageadmin.pool", - "pk": 9 -}, -{ - "fields": { - "smart_enabled": false, - "parted": true, - "btrfs_uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808", - "vendor": "0x1af4", - "name": "virtio-3579-part3", - "smart_available": false, - "transport": null, - "smart_options": null, - "role": "{\"root\": \"btrfs\"}", - "serial": "3579", - "offline": false, - "model": null, - "pool": 1, - "size": 7025459 - }, - "model": "storageadmin.disk", - "pk": 1 -}, -{ - "fields": { - "smart_enabled": false, - "parted": false, - "btrfs_uuid": "3434a015-3770-4efa-be37-a337d22ac552", - "vendor": "0x1af4", - "name": "virtio-1", - "smart_available": false, - "transport": null, - "smart_options": null, - "role": null, - "serial": "1", - "offline": false, - "model": null, - "pool": 9, - "size": 5242880 - }, - "model": "storageadmin.disk", - "pk": 13 -}, -{ - "fields": { - "smart_enabled": false, - "parted": false, - "btrfs_uuid": "3434a015-3770-4efa-be37-a337d22ac552", - "vendor": "0x1af4", - "name": "virtio-2", - "smart_available": false, - "transport": null, - "smart_options": null, - "role": null, - "serial": "2", - "offline": false, - "model": null, - "pool": 9, - "size": 5242880 - }, - "model": "storageadmin.disk", - "pk": 14 -}, -{ - "fields": { - "path": "/mnt2/share1", - "share": 14, - "description": "share1 on Rockstor", - "time_machine": "yes" - }, - "model": "storageadmin.netatalkshare", - "pk": 1 -}, -{ - "fields": { - "pqgroup_rusage": 16, - "group": "root", - "name": "home", - "perms": "755", - "pqgroup": "2015/2", - "eusage": 16, - "uuid": null, - "pqgroup_eusage": 16, - "compression_algo": null, - "owner": "root", - "replica": false, - "qgroup": "0/258", - "toc": "2018-03-25T18:58:38.147Z", - "subvol_name": "home", - "rusage": 16, - "pool": 1, - "size": 7025459 - }, - "model": "storageadmin.share", - "pk": 1 -}, -{ - "fields": { - "pqgroup_rusage": 2233466, - "group": "root", - "name": "root", - "perms": "755", - "pqgroup": "2015/5", - "eusage": 2233466, - "uuid": null, - "pqgroup_eusage": 2233466, - "compression_algo": null, - "owner": "root", - "replica": false, - "qgroup": "0/257", - "toc": "2018-03-25T18:58:38.180Z", - "subvol_name": "root", - "rusage": 2233466, - "pool": 1, - "size": 7025459 - }, - "model": "storageadmin.share", - "pk": 2 -}, -{ - "fields": { - "pqgroup_rusage": 16, - "group": "root", - "name": "share1", - "perms": "755", - "pqgroup": "2015/1", - "eusage": 16, - "uuid": null, - "pqgroup_eusage": 16, - "compression_algo": "no", - "owner": "root", - "replica": false, - "qgroup": "0/258", - "toc": "2018-03-25T18:58:38.078Z", - "subvol_name": "share1", - "rusage": 16, - "pool": 9, - "size": 2097152 - }, - "model": "storageadmin.share", - "pk": 14 -}, -{ - "fields": { - "pqgroup_rusage": 0, - "group": "root", - "name": "share2", - "perms": "755", - "pqgroup": "2015/2", - "eusage": 0, - "uuid": null, - "pqgroup_eusage": 0, - "compression_algo": "no", - "owner": "root", - "replica": false, - "qgroup": "0/259", - "toc": "2018-03-25T18:59:06.119Z", - "subvol_name": "share2", - "rusage": 0, - "pool": 9, - "size": 1048576 - }, - "model": "storageadmin.share", - "pk": 15 -}, -{ - "fields": { - "autoconnect": true, - "name": "eth0", - "ipv6_dns": null, - "ipv4_addresses": "192.168.124.235/24", - "ipv6_gw": null, - "ipv6_addresses": null, - "ipv4_dns": "192.168.124.1", - "state": "activated", - "ipv4_method": "auto", - "ipv6_dns_search": null, - "master": null, - "ipv4_gw": "192.168.124.1", - "ipv4_dns_search": null, - "ipv6_method": null, - "uuid": "8dca3630-8c54-4ad7-8421-327cc2d3d14a" - }, - "model": "storageadmin.networkconnection", - "pk": 1 -}, -{ - "fields": { - "name": "lo", - "state": "10 (unmanaged)", - "dtype": "loopback", - "connection": null, - "mtu": "65536", - "mac": "00:00:00:00:00:00" - }, - "model": "storageadmin.networkdevice", - "pk": 1 -}, -{ - "fields": { - "name": "eth0", - "state": "100 (connected)", - "dtype": "ethernet", - "connection": 1, - "mtu": "1500", - "mac": "52:54:00:58:5D:66" - }, - "model": "storageadmin.networkdevice", - "pk": 2 -}, -{ - "fields": { - "connection": 1, - "mtu": "auto", - "mac": "52:54:00:58:5D:66", - "cloned_mac": null - }, - "model": "storageadmin.ethernetconnection", - "pk": 1 -}, -{ - "fields": { - "current_appliance": true, - "uuid": "679E27FE-EB1A-4DE4-98EF-D9416830C4F5", - "mgmt_port": 443, - "ip": "", - "hostname": "install-test", - "client_id": null, - "client_secret": null - }, - "model": "storageadmin.appliance", - "pk": 1 -}, -{ - "fields": { - "admin": true, - "groupname": "admin", - "gid": 1005 - }, - "model": "storageadmin.group", - "pk": 1 -}, -{ - "fields": { - "username": "admin", - "public_key": null, - "shell": "/bin/bash", - "group": 1, - "uid": 1005, - "admin": true, - "gid": 1005, - "user": [ - "admin" - ], - "smb_shares": [], - "email": null, - "homedir": "/home/admin" - }, - "model": "storageadmin.user", - "pk": 1 -}, -{ - "fields": { - "setup_network": false, - "setup_user": true, - "setup_disks": false, - "setup_system": true - }, - "model": "storageadmin.setup", - "pk": 1 -}, -{ - "fields": { - "display_name": "Backup", - "css_file_name": "backup", - "description": "Backup Server functionality", - "js_file_name": "backup", - "key": "", - "name": "backup" - }, - "model": "storageadmin.plugin", - "pk": 1 -}, -{ - "fields": { - "application": 1, - "name": "cliapp", - "user": 1 - }, - "model": "storageadmin.oauthapp", - "pk": 1 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "illi/docker-haproxy-letsencrypt" - }, - "model": "storageadmin.dimage", - "pk": 1 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/sickbeard" - }, - "model": "storageadmin.dimage", - "pk": 2 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/ombi" - }, - "model": "storageadmin.dimage", - "pk": 3 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "kylemanna/bitcoind" - }, - "model": "storageadmin.dimage", - "pk": 4 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "hurricane/subsonic" - }, - "model": "storageadmin.dimage", - "pk": 5 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "discourse/discourse" - }, - "model": "storageadmin.dimage", - "pk": 6 -}, -{ - "fields": { - "repo": "na", - "tag": "9.5", - "name": "postgres" - }, - "model": "storageadmin.dimage", - "pk": 7 -}, -{ - "fields": { - "repo": "na", - "tag": "8.2.1", - "name": "pschmitt/owncloud" - }, - "model": "storageadmin.dimage", - "pk": 8 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "jrcs/crashplan" - }, - "model": "storageadmin.dimage", - "pk": 9 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "gitlab/gitlab-ce" - }, - "model": "storageadmin.dimage", - "pk": 10 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/freshrss" - }, - "model": "storageadmin.dimage", - "pk": 11 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/sabnzbd" - }, - "model": "storageadmin.dimage", - "pk": 12 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/booksonic" - }, - "model": "storageadmin.dimage", - "pk": 13 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "aptalca/zoneminder-1.29" - }, - "model": "storageadmin.dimage", - "pk": 14 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/sonarr" - }, - "model": "storageadmin.dimage", - "pk": 15 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/deluge" - }, - "model": "storageadmin.dimage", - "pk": 16 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "dbarton/utorrent" - }, - "model": "storageadmin.dimage", - "pk": 17 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/radarr" - }, - "model": "storageadmin.dimage", - "pk": 18 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/plexpy" - }, - "model": "storageadmin.dimage", - "pk": 19 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/plex" - }, - "model": "storageadmin.dimage", - "pk": 20 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "ecodms/allinone-16.09" - }, - "model": "storageadmin.dimage", - "pk": 21 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/muximux" - }, - "model": "storageadmin.dimage", - "pk": 22 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "rocketchat/rocket.chat" - }, - "model": "storageadmin.dimage", - "pk": 23 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "mongo" - }, - "model": "storageadmin.dimage", - "pk": 24 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/syncthing" - }, - "model": "storageadmin.dimage", - "pk": 25 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "tdeckers/logitechmediaserver" - }, - "model": "storageadmin.dimage", - "pk": 26 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/mylar" - }, - "model": "storageadmin.dimage", - "pk": 27 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "ghost" - }, - "model": "storageadmin.dimage", - "pk": 28 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/headphones" - }, - "model": "storageadmin.dimage", - "pk": 29 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/hydra" - }, - "model": "storageadmin.dimage", - "pk": 30 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "resilio/sync" - }, - "model": "storageadmin.dimage", - "pk": 31 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "bittorrent/sync" - }, - "model": "storageadmin.dimage", - "pk": 32 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "dperson/transmission" - }, - "model": "storageadmin.dimage", - "pk": 33 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "collabora/code" - }, - "model": "storageadmin.dimage", - "pk": 34 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/sickrage" - }, - "model": "storageadmin.dimage", - "pk": 35 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/nzbget" - }, - "model": "storageadmin.dimage", - "pk": 36 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/cops" - }, - "model": "storageadmin.dimage", - "pk": 37 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "homeassistant/home-assistant" - }, - "model": "storageadmin.dimage", - "pk": 38 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "geldim/https-redirect" - }, - "model": "storageadmin.dimage", - "pk": 39 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "pghalliday/tftp" - }, - "model": "storageadmin.dimage", - "pk": 40 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "janeczku/dropbox" - }, - "model": "storageadmin.dimage", - "pk": 41 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/lazylibrarian" - }, - "model": "storageadmin.dimage", - "pk": 42 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/mariadb" - }, - "model": "storageadmin.dimage", - "pk": 43 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "owncloud" - }, - "model": "storageadmin.dimage", - "pk": 44 -}, -{ - "fields": { - "repo": "na", - "tag": "canary", - "name": "intersoftlab/duplicati" - }, - "model": "storageadmin.dimage", - "pk": 45 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "gogs/gogs" - }, - "model": "storageadmin.dimage", - "pk": 46 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "emby/embyserver" - }, - "model": "storageadmin.dimage", - "pk": 47 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "jacobalberty/unifi" - }, - "model": "storageadmin.dimage", - "pk": 48 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "haugene/transmission-openvpn" - }, - "model": "storageadmin.dimage", - "pk": 49 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "jenkins" - }, - "model": "storageadmin.dimage", - "pk": 50 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "diginc/pi-hole" - }, - "model": "storageadmin.dimage", - "pk": 51 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/couchpotato" - }, - "model": "storageadmin.dimage", - "pk": 52 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/gsm-ts3" - }, - "model": "storageadmin.dimage", - "pk": 53 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "linuxserver/jackett" - }, - "model": "storageadmin.dimage", - "pk": 54 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "busybox" - }, - "model": "storageadmin.dimage", - "pk": 55 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "kylemanna/openvpn" - }, - "model": "storageadmin.dimage", - "pk": 56 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "coppit/xeoma" - }, - "model": "storageadmin.dimage", - "pk": 57 -}, -{ - "fields": { - "repo": "na", - "tag": "latest", - "name": "magicalyak/docker-zoneminder" - }, - "model": "storageadmin.dimage", - "pk": 58 -}, -{ - "fields": { - "size": 611, - "md5sum": "d0a8d262ae60584f07bf713031332802", - "config_backup": "", - "filename": "backup-2018-03-18-123822.json.gz" - }, - "model": "storageadmin.configbackup", - "pk": 3 -}, -{ - "fields": { - "size": 2505, - "md5sum": "7c4df9e67760b88229bccbad252bea5f", - "config_backup": "config-backups/data", - "filename": "data" - }, - "model": "storageadmin.configbackup", - "pk": 4 -}, -{ - "fields": { - "redirect_uris": "", - "name": "cliapp", - "client_type": "confidential", - "user": [ - "admin" - ], - "client_id": "ITPPST7NWT1PvS9vtrDW8p9IjgjM1EUdDog0Y9gy", - "skip_authorization": false, - "client_secret": "zoaISVx3ebzEwxzcCd1B0lBNV10JPTqBQStrqrYVXf1nqB2RtEUzjGlZhUiFPw1SaG30edhbgkpNQXTAZRKwepHmpcZdH7ly4VHedaFL3YtpZy6XUmPgH5UmL8Cq0iqn", - "authorization_grant_type": "client-credentials" - }, - "model": "oauth2_provider.application", - "pk": 1 -}, -{ - "fields": { - "application": 1, - "token": "WUOCYb5ujOeluzCxhw3pg03RlEAWCp", - "expires": "2018-03-12T01:54:06.834Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 1 -}, -{ - "fields": { - "application": 1, - "token": "kHAb51f351kDarql9Tur5EoRDid1wd", - "expires": "2018-03-12T01:54:06.842Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 2 -}, -{ - "fields": { - "application": 1, - "token": "KUCYCZSvpZx3yGQn5laMr4L5S9gTHP", - "expires": "2018-03-12T01:54:06.850Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 3 -}, -{ - "fields": { - "application": 1, - "token": "w2ql8SFiRXuOMrx6pdJgrWpBK3EAtf", - "expires": "2018-03-12T01:55:49.828Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 4 -}, -{ - "fields": { - "application": 1, - "token": "bZUj2UT70hMF6pFIJpXWY2LHUoziVG", - "expires": "2018-03-12T01:55:49.829Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 5 -}, -{ - "fields": { - "application": 1, - "token": "AQ0r4vKbWXC3iyQ2RKiQ60939un06E", - "expires": "2018-03-12T01:55:49.843Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 6 -}, -{ - "fields": { - "application": 1, - "token": "MlRLR8KCseLEjkfCD5grsPgn4ISzwg", - "expires": "2018-03-12T01:56:08.515Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 7 -}, -{ - "fields": { - "application": 1, - "token": "mrjmEa3c6tgp6n5R4RvgVii1iM1jM6", - "expires": "2018-03-12T01:56:08.531Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 8 -}, -{ - "fields": { - "application": 1, - "token": "f29wxz9MZoPMTiLliQrd6yN1zKixGO", - "expires": "2018-03-12T01:56:08.543Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 9 -}, -{ - "fields": { - "application": 1, - "token": "CY2Bravo2ee0jGZdTxrVFovt7a5hiI", - "expires": "2018-03-12T01:57:53.175Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 10 -}, -{ - "fields": { - "application": 1, - "token": "nbn5eErSy7znsHysjrHXc5hbZnmMsw", - "expires": "2018-03-12T01:57:53.190Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 11 -}, -{ - "fields": { - "application": 1, - "token": "L9AA256EeMDvj69LtfDQknSRsLrzco", - "expires": "2018-03-12T01:57:53.203Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 12 -}, -{ - "fields": { - "application": 1, - "token": "yKdUpQbm6UrnCeqkNlsa57MME7Esyv", - "expires": "2018-03-12T01:57:58.848Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 13 -}, -{ - "fields": { - "application": 1, - "token": "bWK21idIlLep5hgvpATeirPz9sD5Sw", - "expires": "2018-03-12T01:57:58.860Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 14 -}, -{ - "fields": { - "application": 1, - "token": "6PWqtCoKFerhYBKB5kMNI56iIYdoU9", - "expires": "2018-03-12T01:57:58.872Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 15 -}, -{ - "fields": { - "application": 1, - "token": "kpD9tdLPzny0GfMLPdGNbBP1HV6JfE", - "expires": "2018-03-12T01:58:05.168Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 16 -}, -{ - "fields": { - "application": 1, - "token": "WKGwf72Y8DJbjxZ0jIOq2xelSvh6Kp", - "expires": "2018-03-12T01:58:05.185Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 17 -}, -{ - "fields": { - "application": 1, - "token": "kBZ6rVoWeCJq4c06jNr5LZqLzxm3ob", - "expires": "2018-03-12T01:58:05.198Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 18 -}, -{ - "fields": { - "application": 1, - "token": "NRplEHDd21gxgGh9N4AXpsCr0uWLv1", - "expires": "2018-03-12T01:58:32.782Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 19 -}, -{ - "fields": { - "application": 1, - "token": "vXj9adteXBE5UXKx87yrBqK7zKxbxx", - "expires": "2018-03-12T01:58:36.138Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 20 -}, -{ - "fields": { - "application": 1, - "token": "c4Bl7KXZnDkWAOnvmFfEYAupuZjVXr", - "expires": "2018-03-12T01:58:36.162Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 21 -}, -{ - "fields": { - "application": 1, - "token": "6YVph0CuR41aZN0iGsYrayZCFPLOuY", - "expires": "2018-03-12T01:58:36.174Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 22 -}, -{ - "fields": { - "application": 1, - "token": "EeBNeo2VI4nDRtvuD4GF6rLkA4d38Y", - "expires": "2018-03-12T01:59:08.741Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 23 -}, -{ - "fields": { - "application": 1, - "token": "GBtQ96nFGNhBeh4h7jhfamiKMD83O0", - "expires": "2018-03-12T01:59:08.838Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 24 -}, -{ - "fields": { - "application": 1, - "token": "TA3AcgXDiDReVL2iWVd5PgAULxDvqg", - "expires": "2018-03-12T01:59:08.856Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 25 -}, -{ - "fields": { - "application": 1, - "token": "eF7kkIDlnfaeXFQmY6xF7jwg4yhRj2", - "expires": "2018-03-12T01:59:08.873Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 26 -}, -{ - "fields": { - "application": 1, - "token": "yTZc3GACpwIt5RX9OcubS6l7Z9BoTd", - "expires": "2018-03-12T01:59:46.480Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 27 -}, -{ - "fields": { - "application": 1, - "token": "1txS1CCInH0NpT4XiPImXNYjZuhXL7", - "expires": "2018-03-12T01:59:46.480Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 28 -}, -{ - "fields": { - "application": 1, - "token": "1a0qn4sPhmEAXjM3bvz6T0dZfMdeIX", - "expires": "2018-03-12T01:59:46.503Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 29 -}, -{ - "fields": { - "application": 1, - "token": "PTw6fX9obHIAWritbGhuv5ZpMplWt2", - "expires": "2018-03-12T02:20:47.727Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 30 -}, -{ - "fields": { - "application": 1, - "token": "lGNUArA0OnhuKAVvjln73xB5JcZ8yM", - "expires": "2018-03-12T02:20:48.253Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 31 -}, -{ - "fields": { - "application": 1, - "token": "yqCDbKSqn9LEASZfZOXfAkN96OKMwT", - "expires": "2018-03-12T02:20:48.272Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 32 -}, -{ - "fields": { - "application": 1, - "token": "vBSZ5BKGsiXKg7mAfhi30JEMCCBGui", - "expires": "2018-03-12T02:20:48.284Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 33 -}, -{ - "fields": { - "application": 1, - "token": "D7NadSGvL6GzO5VoEyEEqgVeSkiUCU", - "expires": "2018-03-12T02:21:04.573Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 34 -}, -{ - "fields": { - "application": 1, - "token": "XhrZKFjiJzMLIUwPIJ42yl8Q87pb69", - "expires": "2018-03-12T02:21:04.577Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 35 -}, -{ - "fields": { - "application": 1, - "token": "8qmYGunBpUcUya2VFxvmLJuXCXtpKM", - "expires": "2018-03-12T02:21:04.597Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 36 -}, -{ - "fields": { - "application": 1, - "token": "9d2Y9XhHbn0y9l8fEm6HwkviwSm5rJ", - "expires": "2018-03-12T02:21:15.392Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 37 -}, -{ - "fields": { - "application": 1, - "token": "y6ndPuSN9fKRpDRVYCHT1xXmoHWLs5", - "expires": "2018-03-12T02:21:15.392Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 38 -}, -{ - "fields": { - "application": 1, - "token": "ZWzXjneK213rxa0RCHbwmgenj37tT5", - "expires": "2018-03-12T02:21:15.405Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 39 -}, -{ - "fields": { - "application": 1, - "token": "1UtOfG2mtX5S54i3A5XiSbqNjWlLzZ", - "expires": "2018-03-12T02:22:48.423Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 40 -}, -{ - "fields": { - "application": 1, - "token": "BSk1hZbHjGORzh62779FQRKu5jbDGl", - "expires": "2018-03-12T02:22:48.435Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 41 -}, -{ - "fields": { - "application": 1, - "token": "CQneE1xTCG0hxW53GuZs6Fz0rytHS7", - "expires": "2018-03-12T02:22:48.448Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 42 -}, -{ - "fields": { - "application": 1, - "token": "uYnVETcGfQnTsJi3b48SGF7Xjl8ixv", - "expires": "2018-03-12T02:22:52.464Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 43 -}, -{ - "fields": { - "application": 1, - "token": "XvKsGC1CsrlwIuURj4E9GULqkpIbSh", - "expires": "2018-03-12T02:26:50.227Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 44 -}, -{ - "fields": { - "application": 1, - "token": "ukL2u1k9vlHXCK45TPyCkYUDTF89Cg", - "expires": "2018-03-12T02:26:50.238Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 45 -}, -{ - "fields": { - "application": 1, - "token": "sMibXJiczFl30HkB0i3yUMhQ5blGKM", - "expires": "2018-03-12T02:26:50.249Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 46 -}, -{ - "fields": { - "application": 1, - "token": "nDMctFojXw5BRqjL7Ws9KnqkxMtDPN", - "expires": "2018-03-12T02:26:52.255Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 47 -}, -{ - "fields": { - "application": 1, - "token": "ctO9djRRO92WV3Xkhc81llMca7rQ3c", - "expires": "2018-03-12T02:58:58.858Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 48 -}, -{ - "fields": { - "application": 1, - "token": "4MKDTWfTBrGZe31TWfZlpFdW7iSxae", - "expires": "2018-03-12T02:58:59.547Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 49 -}, -{ - "fields": { - "application": 1, - "token": "OrWt3hHN8v3HajyYl2Eg0dVPtcTMqw", - "expires": "2018-03-12T02:58:59.560Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 50 -}, -{ - "fields": { - "application": 1, - "token": "sBj0UN0MKn3c9EcTKVok2Z3QpQTLPq", - "expires": "2018-03-12T02:59:01.582Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 51 -}, -{ - "fields": { - "application": 1, - "token": "bg4flatWN1CkqVYXG8dWwX9WHjDX9T", - "expires": "2018-03-12T03:43:06.780Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 52 -}, -{ - "fields": { - "application": 1, - "token": "7zzYBxxVl0LQSdi3AU1mKi7Rbc9R23", - "expires": "2018-03-12T03:43:08.296Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 53 -}, -{ - "fields": { - "application": 1, - "token": "scYRhTiy7rhBVsc6i5BfSw9HlESBZK", - "expires": "2018-03-12T03:43:08.297Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 54 -}, -{ - "fields": { - "application": 1, - "token": "t0laVubqIzzgfzc0rPQdMxGkeCDlub", - "expires": "2018-03-12T03:43:08.321Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 55 -}, -{ - "fields": { - "application": 1, - "token": "SqXw799fIwqNxol9FQEAvdzIpAmfIK", - "expires": "2018-03-12T03:52:40.536Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 56 -}, -{ - "fields": { - "application": 1, - "token": "SvdInE8tgBjLQRogurJlrqC1F682zz", - "expires": "2018-03-12T03:52:42.415Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 57 -}, -{ - "fields": { - "application": 1, - "token": "gAinjWSUSKfeXVkbVlWXxkGijUCYD9", - "expires": "2018-03-12T03:52:42.418Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 58 -}, -{ - "fields": { - "application": 1, - "token": "dfPc4to8GrTUMrnqZSuOYdafrSRi8f", - "expires": "2018-03-12T03:52:42.434Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 59 -}, -{ - "fields": { - "application": 1, - "token": "aCyzNDdtNcvqLyFQlXKMpJhWoa649c", - "expires": "2018-03-12T03:57:17.158Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 60 -}, -{ - "fields": { - "application": 1, - "token": "VrZ4IHqopt3HPNswWsJWovlCXVzrNS", - "expires": "2018-03-12T03:57:17.435Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 61 -}, -{ - "fields": { - "application": 1, - "token": "9oTDrM04piaYbHmgnOAcHXDyWtS0Xp", - "expires": "2018-03-12T03:57:17.453Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 62 -}, -{ - "fields": { - "application": 1, - "token": "ECnBvX8Nw96ZA53TisXzf5jINHXGH2", - "expires": "2018-03-12T03:57:17.464Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 63 -}, -{ - "fields": { - "application": 1, - "token": "QfBpaXQiIylTwDYMb2fLHjDlkQI6WB", - "expires": "2018-03-12T05:14:12.178Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 64 -}, -{ - "fields": { - "application": 1, - "token": "bWEkkGKEMFQVXnJ8ov6S7vJZDf5P2e", - "expires": "2018-03-12T05:14:12.179Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 65 -}, -{ - "fields": { - "application": 1, - "token": "ApTr526wlfNhxAuxJU1veUfdbYgcvC", - "expires": "2018-03-12T05:14:12.202Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 66 -}, -{ - "fields": { - "application": 1, - "token": "rpKYLBfLJQeml0AhOFWSYhEsjEZ1X3", - "expires": "2018-03-12T19:27:20.653Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 67 -}, -{ - "fields": { - "application": 1, - "token": "ukwz65gDfoT8TCrVHzaLIMOebIijKH", - "expires": "2018-03-12T20:07:26.020Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 68 -}, -{ - "fields": { - "application": 1, - "token": "4Qt1bWzJMNXvwXp5xoPMasyNo4n88m", - "expires": "2018-03-12T20:10:14.987Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 69 -}, -{ - "fields": { - "application": 1, - "token": "NAerAf65KtgJqRSEviLzM9ZX0wdNjY", - "expires": "2018-03-12T20:10:15.011Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 70 -}, -{ - "fields": { - "application": 1, - "token": "HYBpsT4e8JETeKyIzGdR8SnOPJw5xl", - "expires": "2018-03-12T20:10:15.012Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 71 -}, -{ - "fields": { - "application": 1, - "token": "pjNqKkeWkwDEQhu7d1ELXGNT9BKFpy", - "expires": "2018-03-13T03:00:33.942Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 72 -}, -{ - "fields": { - "application": 1, - "token": "8amjgWZkiLFthMlgoMGNaipQJdSwBd", - "expires": "2018-03-13T03:00:33.954Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 73 -}, -{ - "fields": { - "application": 1, - "token": "dlRHYix4VdNV4vSGP54snrvlZ4EPOX", - "expires": "2018-03-13T03:00:33.966Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 74 -}, -{ - "fields": { - "application": 1, - "token": "bUFgi23EyApnimdMomPhH4nJvKEbkd", - "expires": "2018-03-13T03:43:06.182Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 75 -}, -{ - "fields": { - "application": 1, - "token": "AvAjyEZx2k9aodGJCScHuVwcGqAOY0", - "expires": "2018-03-13T03:43:06.885Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 76 -}, -{ - "fields": { - "application": 1, - "token": "DhkKrohK4RM0ViFFkaypGJKA4E48un", - "expires": "2018-03-13T03:43:06.895Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 77 -}, -{ - "fields": { - "application": 1, - "token": "5Jhv6f1COsfZtpgihe9pbgdmJS7Ti7", - "expires": "2018-03-13T03:43:08.770Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 78 -}, -{ - "fields": { - "application": 1, - "token": "tcYlSIv8cMUi774NKdt0DageHxHLcm", - "expires": "2018-03-13T03:54:16.843Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 79 -}, -{ - "fields": { - "application": 1, - "token": "nFGXMsJj0t17ZCO7vJCdgs288Dz2DD", - "expires": "2018-03-13T03:54:17.994Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 80 -}, -{ - "fields": { - "application": 1, - "token": "0thVdGayFFEfoKRKpCtv1sVYMqy2XB", - "expires": "2018-03-13T03:54:17.995Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 81 -}, -{ - "fields": { - "application": 1, - "token": "DLAN1cj9Kj02kMls30199wPGSMZgaL", - "expires": "2018-03-13T03:54:18.020Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 82 -}, -{ - "fields": { - "application": 1, - "token": "WjEhSQSFiywbvmcb8W9JfkCoXKawmt", - "expires": "2018-03-13T05:18:18.493Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 83 -}, -{ - "fields": { - "application": 1, - "token": "pORGr8yYltJUFcZo282wEETzYVUUWB", - "expires": "2018-03-13T05:18:18.509Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 84 -}, -{ - "fields": { - "application": 1, - "token": "sFHgllUc59t6YwaEpRuPXS8BsKIaA8", - "expires": "2018-03-13T05:18:18.515Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 85 -}, -{ - "fields": { - "application": 1, - "token": "9C4rKhKNmduuS4TEJvdFJrbqqw9xmm", - "expires": "2018-03-13T21:19:26.816Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 86 -}, -{ - "fields": { - "application": 1, - "token": "lhfr0Epuiq0uV5S2EcOGhBLfZjEvmZ", - "expires": "2018-03-14T00:18:25.104Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 87 -}, -{ - "fields": { - "application": 1, - "token": "BrislOHw9OpSweuF8w7rrMn4ydgwkM", - "expires": "2018-03-14T00:18:25.104Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 88 -}, -{ - "fields": { - "application": 1, - "token": "eawi43R20H6EI1YH0LMWgBapFAjUj6", - "expires": "2018-03-14T00:18:25.134Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 89 -}, -{ - "fields": { - "application": 1, - "token": "FSFYQsWA9rHtOolPsjeTfWDwZ38U69", - "expires": "2018-03-14T00:21:07.214Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 90 -}, -{ - "fields": { - "application": 1, - "token": "DWJnB0NhLpdjHaLnegE0tjowLtbDET", - "expires": "2018-03-14T00:21:07.227Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 91 -}, -{ - "fields": { - "application": 1, - "token": "QFtg55wH2lzCCLBZ1pKYErShE9VRlQ", - "expires": "2018-03-14T00:21:11.190Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 92 -}, -{ - "fields": { - "application": 1, - "token": "LQkuYo1wXzsSv7Jxh5b6vhS9lLy7fo", - "expires": "2018-03-14T03:32:05.417Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 93 -}, -{ - "fields": { - "application": 1, - "token": "dnT2LAxSSuWI5ljqu3qbroMNqgVXoG", - "expires": "2018-03-14T03:32:05.427Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 94 -}, -{ - "fields": { - "application": 1, - "token": "CDIA5wjRu34xK19YrV2BiX7M3c9XGM", - "expires": "2018-03-14T03:32:09.392Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 95 -}, -{ - "fields": { - "application": 1, - "token": "DqpaiuwLwBRWAJJ8j1mF6IoBZzOfEm", - "expires": "2018-03-14T03:41:11.966Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 96 -}, -{ - "fields": { - "application": 1, - "token": "2dnyMP6X0dZ30sKbrDt9cvQEJh1nFN", - "expires": "2018-03-14T03:41:11.977Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 97 -}, -{ - "fields": { - "application": 1, - "token": "gLGV5EvWVeh1QFhrSheNdr5NUPSbJR", - "expires": "2018-03-14T03:41:13.984Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 98 -}, -{ - "fields": { - "application": 1, - "token": "gwRAyV9ouPfSk3X4Cf59GFysosL7ya", - "expires": "2018-03-14T04:57:39.364Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 99 -}, -{ - "fields": { - "application": 1, - "token": "m6oBC5ygXcLKPbogfZ2hT7zzqWc8dB", - "expires": "2018-03-14T04:57:39.379Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 100 -}, -{ - "fields": { - "application": 1, - "token": "aOIPT4W4rN7tJVJqLmIMHpd2V9pUgO", - "expires": "2018-03-14T04:57:39.403Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 101 -}, -{ - "fields": { - "application": 1, - "token": "UYJKSu1biYrZVFTQVClZv65ryMcVPC", - "expires": "2018-03-14T04:57:51.270Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 102 -}, -{ - "fields": { - "application": 1, - "token": "foEUdirPlQvNtMC4tftpHnV1gwgO62", - "expires": "2018-03-14T04:57:51.281Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 103 -}, -{ - "fields": { - "application": 1, - "token": "CxNUzi0xWRhdDl4bdoR3tXaWLFUhp9", - "expires": "2018-03-14T04:57:51.299Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 104 -}, -{ - "fields": { - "application": 1, - "token": "Y9YrArk9HeNaiUXXF6A37PmXJYQ9e8", - "expires": "2018-03-14T04:58:00.393Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 105 -}, -{ - "fields": { - "application": 1, - "token": "jLXdR39hsoUZMiq2MkWcxbwneNhD8d", - "expires": "2018-03-14T04:58:00.406Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 106 -}, -{ - "fields": { - "application": 1, - "token": "N1x4EsuN4kysfavvARWsZW4VHYOOZ1", - "expires": "2018-03-14T04:58:00.418Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 107 -}, -{ - "fields": { - "application": 1, - "token": "tniUzNDuMWi0DfNt5pOj7cqli97oVZ", - "expires": "2018-03-14T04:58:00.700Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 108 -}, -{ - "fields": { - "application": 1, - "token": "8W0OSIMpxmIYRj3Eb75Jm6moCWwsfP", - "expires": "2018-03-14T04:58:00.711Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 109 -}, -{ - "fields": { - "application": 1, - "token": "eNGP3WYsZlODypRHqpr8jjZ6dnzd6s", - "expires": "2018-03-14T04:58:00.721Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 110 -}, -{ - "fields": { - "application": 1, - "token": "Uj2GLh3e1TjhtNGI0sWDnTu3SYELCE", - "expires": "2018-03-14T04:58:13.060Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 111 -}, -{ - "fields": { - "application": 1, - "token": "gjyZmEckXr0kO6vytecMryiMkNrC4V", - "expires": "2018-03-14T04:58:13.075Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 112 -}, -{ - "fields": { - "application": 1, - "token": "NHRZ8j2obqRdg8gGCYZbjw1XGobGh0", - "expires": "2018-03-14T04:58:13.088Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 113 -}, -{ - "fields": { - "application": 1, - "token": "92Atkb13w460Ed6orhV99F4PEzxGp0", - "expires": "2018-03-14T04:58:13.553Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 114 -}, -{ - "fields": { - "application": 1, - "token": "xUHJonNeCug2EqJ5VyzZQ8cAKC9zVl", - "expires": "2018-03-14T04:58:13.565Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 115 -}, -{ - "fields": { - "application": 1, - "token": "5r4PEkFNbSn15yjp2ZAzHDIBPqVFMV", - "expires": "2018-03-14T04:58:13.576Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 116 -}, -{ - "fields": { - "application": 1, - "token": "SDFYxaUyco0sXcId82dZ69TKOJml16", - "expires": "2018-03-14T04:58:21.251Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 117 -}, -{ - "fields": { - "application": 1, - "token": "mtb7KIv9mnkJTjZpBKMPjL1Nje7LS3", - "expires": "2018-03-14T04:58:21.267Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 118 -}, -{ - "fields": { - "application": 1, - "token": "857kl7uns4Ow02Vt9L9u9DN45tGe0O", - "expires": "2018-03-14T04:58:21.276Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 119 -}, -{ - "fields": { - "application": 1, - "token": "jOdp4y9fJQjezds1XJnGpSKLciXFtI", - "expires": "2018-03-14T04:58:21.767Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 120 -}, -{ - "fields": { - "application": 1, - "token": "oh9dc64U520zoNM51McrTjYghKSuSK", - "expires": "2018-03-14T04:58:21.781Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 121 -}, -{ - "fields": { - "application": 1, - "token": "JoIrQERVcSzYwDoylNr2g27KOe2xzT", - "expires": "2018-03-14T04:58:21.793Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 122 -}, -{ - "fields": { - "application": 1, - "token": "I3VK505SrcOeLjrdnVKVLJeM4eqY0o", - "expires": "2018-03-14T19:21:32.708Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 123 -}, -{ - "fields": { - "application": 1, - "token": "JKedt69Ir0dN69Uyc5Su7f84Ll3OUs", - "expires": "2018-03-14T19:24:06.048Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 124 -}, -{ - "fields": { - "application": 1, - "token": "txjWK1pDdw2cVyzHxlMTG7iKPvobWL", - "expires": "2018-03-14T19:24:06.053Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 125 -}, -{ - "fields": { - "application": 1, - "token": "vo9x7csvpkekiEq9Z3G98VCwAwB4YZ", - "expires": "2018-03-14T19:24:06.096Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 126 -}, -{ - "fields": { - "application": 1, - "token": "cLrUgLTqRMs07JZVyJVLRkVmkNJLbQ", - "expires": "2018-03-14T19:24:22.840Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 127 -}, -{ - "fields": { - "application": 1, - "token": "5p0CYlYKJT9mpzkzsjy2q3lJzySPFZ", - "expires": "2018-03-14T19:24:22.857Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 128 -}, -{ - "fields": { - "application": 1, - "token": "yJrGQihKHUsr6bUhQd3bdMXF1UvHtE", - "expires": "2018-03-14T19:24:22.868Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 129 -}, -{ - "fields": { - "application": 1, - "token": "5CvGcL9ANBAWbVfoa1GSU6VAlsBP8f", - "expires": "2018-03-14T19:24:36.906Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 130 -}, -{ - "fields": { - "application": 1, - "token": "EuPuHdd4jfkwt61nq6Kgwia3l1xerI", - "expires": "2018-03-14T19:24:36.934Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 131 -}, -{ - "fields": { - "application": 1, - "token": "O6vmSUvY2ZpLSdYNgikms1w1h2SuQE", - "expires": "2018-03-14T19:24:36.946Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 132 -}, -{ - "fields": { - "application": 1, - "token": "ue2F2uikMTs0sSFzcMzuwSXLEdd5KZ", - "expires": "2018-03-14T20:11:00.633Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 133 -}, -{ - "fields": { - "application": 1, - "token": "PQ4wDjBanL8klDVp0JqStynpLCk0BJ", - "expires": "2018-03-14T20:11:01.952Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 134 -}, -{ - "fields": { - "application": 1, - "token": "KRw2IpEkNRMK7sc2arcT0EXmn4uc3L", - "expires": "2018-03-14T20:11:01.961Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 135 -}, -{ - "fields": { - "application": 1, - "token": "Ykpe1kRcyANmZMdfsibbwO0oAVPgTT", - "expires": "2018-03-14T20:11:01.970Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 136 -}, -{ - "fields": { - "application": 1, - "token": "EkFf2tCrAQhbUW9eTShqba3GtYlU7N", - "expires": "2018-03-14T20:41:47.053Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 137 -}, -{ - "fields": { - "application": 1, - "token": "6Yax8jYWrkYXXgaxhr5W3eIOlUB6Hq", - "expires": "2018-03-14T20:41:47.068Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 138 -}, -{ - "fields": { - "application": 1, - "token": "q73fXLKaaghRMfV1V2LDmtVNgvQupZ", - "expires": "2018-03-14T20:41:47.081Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 139 -}, -{ - "fields": { - "application": 1, - "token": "8SZQQG4U6z25olAmTg4cyBrYlLRtKr", - "expires": "2018-03-14T22:57:18.964Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 140 -}, -{ - "fields": { - "application": 1, - "token": "HQZzhFLekckacuCcbveAo6QBW9HUFN", - "expires": "2018-03-14T22:57:18.978Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 141 -}, -{ - "fields": { - "application": 1, - "token": "DbsJXi1bSyY8CMlR2bI2wSGGvoTDZE", - "expires": "2018-03-14T22:57:18.991Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 142 -}, -{ - "fields": { - "application": 1, - "token": "JUX2th1vSh4Q37g2cM9P1GUe7prHZz", - "expires": "2018-03-14T22:57:34.607Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 143 -}, -{ - "fields": { - "application": 1, - "token": "vnQ01Tn0idW3djqVYFDVrUCYw0dI5s", - "expires": "2018-03-14T22:57:35.341Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 144 -}, -{ - "fields": { - "application": 1, - "token": "jWxu3Y6XMdwgMQoDttMWRSjw8yaEA6", - "expires": "2018-03-14T22:57:35.356Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 145 -}, -{ - "fields": { - "application": 1, - "token": "FmX15RN27E7vFXD5zjdw7uB0nAZl7k", - "expires": "2018-03-14T22:57:35.370Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 146 -}, -{ - "fields": { - "application": 1, - "token": "Ov4gz9svetR7b7qPuesauWgYhBi8DQ", - "expires": "2018-03-15T03:41:32.461Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 147 -}, -{ - "fields": { - "application": 1, - "token": "mEaZvkde8et5DQc1jCZbIbtctmoAzU", - "expires": "2018-03-15T03:41:32.474Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 148 -}, -{ - "fields": { - "application": 1, - "token": "mrPKv6RQXk3HR4dlaEeNewrq18VxC5", - "expires": "2018-03-15T03:41:32.486Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 149 -}, -{ - "fields": { - "application": 1, - "token": "3wliuRHZRT1vmcon6jR566qZqKLoP1", - "expires": "2018-03-15T03:41:36.440Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 150 -}, -{ - "fields": { - "application": 1, - "token": "MD0joecZ7wjitQ2bzHZ0kjo6W1Kkmb", - "expires": "2018-03-15T20:38:56.272Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 151 -}, -{ - "fields": { - "application": 1, - "token": "g1M2hZhiqv6BZg3WOz7M2gOBTiAp69", - "expires": "2018-03-15T20:39:09.010Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 152 -}, -{ - "fields": { - "application": 1, - "token": "ne1qfF17eezPIkbg6IIzKfiBMBMCBa", - "expires": "2018-03-15T20:39:09.016Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 153 -}, -{ - "fields": { - "application": 1, - "token": "pilE3LTQbvXjDxB7rNALyugYrxQh31", - "expires": "2018-03-15T20:39:09.022Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 154 -}, -{ - "fields": { - "application": 1, - "token": "7jHulNu6JI5htWJKeVTUeLf4Vop8Ij", - "expires": "2018-03-15T20:39:42.506Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 155 -}, -{ - "fields": { - "application": 1, - "token": "gHiWQsENPz6YW9ggi0xfXSp2GpWTz6", - "expires": "2018-03-15T20:39:42.507Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 156 -}, -{ - "fields": { - "application": 1, - "token": "iMLYJ5fpLk0yh4wVW9hwIjrKepc1EF", - "expires": "2018-03-15T20:39:42.532Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 157 -}, -{ - "fields": { - "application": 1, - "token": "P2UV1NcLe2yvlgqBAbQEw7JRjRg8UA", - "expires": "2018-03-18T03:26:09.460Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 158 -}, -{ - "fields": { - "application": 1, - "token": "CfuDbPS1I2e4NuslOJNDVgLjpqqKHb", - "expires": "2018-03-18T21:29:15.720Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 159 -}, -{ - "fields": { - "application": 1, - "token": "ImB9S2mOZsgxLMIxdFF2IxXHpBlNVl", - "expires": "2018-03-18T21:39:23.619Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 160 -}, -{ - "fields": { - "application": 1, - "token": "j0Gwp1Q9gdexMHpMxlWZ3tQQ82dHNt", - "expires": "2018-03-18T21:39:23.629Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 161 -}, -{ - "fields": { - "application": 1, - "token": "HYYg8AaSuR4QPYXd0w9u8nZXCPCapA", - "expires": "2018-03-18T21:39:23.641Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 162 -}, -{ - "fields": { - "application": 1, - "token": "QblglZBreSgUZvI7uUQoUQl1lZF3o1", - "expires": "2018-03-18T22:25:40.092Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 163 -}, -{ - "fields": { - "application": 1, - "token": "4PA7BcCuL490xCl2pdeggbgvGDK5Zv", - "expires": "2018-03-18T22:25:40.094Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 164 -}, -{ - "fields": { - "application": 1, - "token": "R767cmNVMnZPJUF6KwOuurzowTQDtI", - "expires": "2018-03-18T22:25:40.122Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 165 -}, -{ - "fields": { - "application": 1, - "token": "dDszBgr9YYtCfPFIah9d1q3ttfkpIf", - "expires": "2018-03-18T22:32:26.794Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 166 -}, -{ - "fields": { - "application": 1, - "token": "xSXqJ0fLFNe2fxEtDAPxvVRwSp558A", - "expires": "2018-03-18T22:32:26.832Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 167 -}, -{ - "fields": { - "application": 1, - "token": "e27lAwaoOsc7IMQjXPZOtkH9qUCmwd", - "expires": "2018-03-18T22:32:26.853Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 168 -}, -{ - "fields": { - "application": 1, - "token": "zcosCeHzju0UvQawFHwwmEUBEnEIoc", - "expires": "2018-03-18T22:32:58.260Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 169 -}, -{ - "fields": { - "application": 1, - "token": "S820ddQW0MsOueSJ3wWIKUcRvKDkQp", - "expires": "2018-03-18T22:33:17.209Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 170 -}, -{ - "fields": { - "application": 1, - "token": "RS8wBHkFTEp1xSaDWgJ8cbgC6cm5UE", - "expires": "2018-03-18T22:33:17.225Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 171 -}, -{ - "fields": { - "application": 1, - "token": "a877iJHCJFoCytHjShRr8RARQihM9C", - "expires": "2018-03-18T22:33:17.226Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 172 -}, -{ - "fields": { - "application": 1, - "token": "FL2jfBJfGXELypHXmd3EKRBC8tEavr", - "expires": "2018-03-18T23:00:26.260Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 173 -}, -{ - "fields": { - "application": 1, - "token": "CitVjhE4JOv18qhhOyFJsFKfg0dKu3", - "expires": "2018-03-18T23:00:26.278Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 174 -}, -{ - "fields": { - "application": 1, - "token": "GwQ1AJy9W1R3Gq2CU38RaXG8W1EonR", - "expires": "2018-03-18T23:00:26.305Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 175 -}, -{ - "fields": { - "application": 1, - "token": "Nf7dMAVhqwPDgDowXVhKNvNnMDsJjF", - "expires": "2018-03-18T23:00:28.790Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 176 -}, -{ - "fields": { - "application": 1, - "token": "5vOvzd8TKbXhZhAlEpK8MxLiwHxEVV", - "expires": "2018-03-18T23:00:28.803Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 177 -}, -{ - "fields": { - "application": 1, - "token": "vOnIRF6JoOYAIgTPnATflx9JOMg02m", - "expires": "2018-03-18T23:00:28.815Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 178 -}, -{ - "fields": { - "application": 1, - "token": "F4QTIj5civDNdESIdYFNN0lQB1GZMq", - "expires": "2018-03-18T23:00:56.191Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 179 -}, -{ - "fields": { - "application": 1, - "token": "kQ4vjhfX56dE3gVSwpkarArgKXw08o", - "expires": "2018-03-18T23:00:56.193Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 180 -}, -{ - "fields": { - "application": 1, - "token": "McaK7NGz3eSLl0nVO7pu8TxOl7qBbi", - "expires": "2018-03-18T23:00:56.202Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 181 -}, -{ - "fields": { - "application": 1, - "token": "gBRcdy0joar4OlJPDgfykMcfrn5Qcs", - "expires": "2018-03-19T01:38:48.216Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 182 -}, -{ - "fields": { - "application": 1, - "token": "Ve6YEy6rSGJZ9v4DqrXTmjwS31CG9n", - "expires": "2018-03-19T04:30:11.378Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 183 -}, -{ - "fields": { - "application": 1, - "token": "4Oyl2XfmZN48982PXNmsN0XiT4yXbk", - "expires": "2018-03-19T04:30:11.379Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 184 -}, -{ - "fields": { - "application": 1, - "token": "2VYi5pDReKK2G3zg2PhRRTmxN1cuQc", - "expires": "2018-03-19T04:30:11.405Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 185 -}, -{ - "fields": { - "application": 1, - "token": "nq3nLyNnGxeuwUoYG7Vv4b5xI9daLv", - "expires": "2018-03-19T04:39:37.898Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 186 -}, -{ - "fields": { - "application": 1, - "token": "Ni2yjJrOOEaodL1sbM90As2y1Enmtr", - "expires": "2018-03-19T04:39:37.916Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 187 -}, -{ - "fields": { - "application": 1, - "token": "lT7gGOBh3a6nIaTTvdlEn9WnAk31bn", - "expires": "2018-03-19T04:39:37.931Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 188 -}, -{ - "fields": { - "application": 1, - "token": "Z7MCGdxtFQrV7oolqW5pTs5gp4GXRn", - "expires": "2018-03-19T04:39:38.106Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 189 -}, -{ - "fields": { - "application": 1, - "token": "megxJCWfCe32icaH03s0YiSiobNGwa", - "expires": "2018-03-19T04:39:45.005Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 190 -}, -{ - "fields": { - "application": 1, - "token": "8xGdQemykjMRy2DwjuJ5YN09chpbfD", - "expires": "2018-03-19T04:39:45.026Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 191 -}, -{ - "fields": { - "application": 1, - "token": "7OPIRinLQyA49SO5EjApp6bkBPWd0t", - "expires": "2018-03-19T04:39:45.041Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 192 -}, -{ - "fields": { - "application": 1, - "token": "pFf9yOibpt8RwwtKXkCrPHSzw55bj7", - "expires": "2018-03-19T22:23:23.090Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 193 -}, -{ - "fields": { - "application": 1, - "token": "0dyt7DithN7LX3W75pAz0GgrvkAcoD", - "expires": "2018-03-19T22:27:38.019Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 194 -}, -{ - "fields": { - "application": 1, - "token": "QOUUfASZJ5P1goC9psy2IFdOF0MEQW", - "expires": "2018-03-19T22:27:38.064Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 195 -}, -{ - "fields": { - "application": 1, - "token": "g9eiIVQbp3xomwlHGqHg1Dc5XeO3nI", - "expires": "2018-03-19T22:27:38.083Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 196 -}, -{ - "fields": { - "application": 1, - "token": "hAh34J64yHpggrJWTBUKKH4mtEXJ6x", - "expires": "2018-03-20T00:12:39.719Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 197 -}, -{ - "fields": { - "application": 1, - "token": "fGJcX3Cn99dbgVhVWAX16TaFZHmpSB", - "expires": "2018-03-20T00:12:39.734Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 198 -}, -{ - "fields": { - "application": 1, - "token": "YANFBoI2O4b22egmVxJGcGkm5hj7yO", - "expires": "2018-03-20T00:12:39.747Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 199 -}, -{ - "fields": { - "application": 1, - "token": "xm8aikDorJZkVgHhqj7ae8CABL9Br2", - "expires": "2018-03-20T00:14:43.096Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 200 -}, -{ - "fields": { - "application": 1, - "token": "p5d0n7F6PlFpL3qFk8FjUhROsOWuFy", - "expires": "2018-03-20T00:14:43.607Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 201 -}, -{ - "fields": { - "application": 1, - "token": "B5teMcSQxbjhCtjI8ogxkGaWczzpx0", - "expires": "2018-03-20T00:14:43.623Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 202 -}, -{ - "fields": { - "application": 1, - "token": "gQcWHhLKlya6lmRcDQ5YvyBk30t0Qx", - "expires": "2018-03-20T00:14:43.639Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 203 -}, -{ - "fields": { - "application": 1, - "token": "CYUBmMRFcdTUKVhGhuRjns1ne2vfic", - "expires": "2018-03-20T00:14:46.066Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 204 -}, -{ - "fields": { - "application": 1, - "token": "3lJq7PBrBaGVWxXx0SlmDrfj1BlU4c", - "expires": "2018-03-20T00:14:46.080Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 205 -}, -{ - "fields": { - "application": 1, - "token": "Qw2zQTQp9Z5XWnoeqoXHKJt8dHeWzq", - "expires": "2018-03-20T00:14:46.099Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 206 -}, -{ - "fields": { - "application": 1, - "token": "10r1xz9SucKRDAMP3izWHkaK6HsFCc", - "expires": "2018-03-20T00:15:04.460Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 207 -}, -{ - "fields": { - "application": 1, - "token": "pPunEnpoSN495eUf29xlDcljictZu3", - "expires": "2018-03-20T00:15:04.486Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 208 -}, -{ - "fields": { - "application": 1, - "token": "TN58l4Xssh92VTEj2jMHkVBReOz3fb", - "expires": "2018-03-20T00:15:04.503Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 209 -}, -{ - "fields": { - "application": 1, - "token": "9oMxwAXKkvHchWKY2Xvk4bUHiw7Qlx", - "expires": "2018-03-20T00:15:04.973Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 210 -}, -{ - "fields": { - "application": 1, - "token": "CbgZyWtIzFSBNgIKxLamNGkVLmYOzq", - "expires": "2018-03-20T00:15:04.988Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 211 -}, -{ - "fields": { - "application": 1, - "token": "1Ac70lwIwK6PZfB4TFaVyPAINIxkk6", - "expires": "2018-03-20T00:15:05.000Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 212 -}, -{ - "fields": { - "application": 1, - "token": "unM3g1uVIp1fKkIAPR1NRk2WSFFGeq", - "expires": "2018-03-20T00:15:20.149Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 213 -}, -{ - "fields": { - "application": 1, - "token": "RyLVnwFQ7mNnalPS2lFNxi4L5hab1u", - "expires": "2018-03-20T00:15:20.169Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 214 -}, -{ - "fields": { - "application": 1, - "token": "0Yp7WL5ksXnC5RIuOYbqK3tHjPX0F0", - "expires": "2018-03-20T00:15:20.182Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 215 -}, -{ - "fields": { - "application": 1, - "token": "zTGbWMENQWkXjNYRZCxfIgHytmfG9E", - "expires": "2018-03-20T00:17:03.150Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 216 -}, -{ - "fields": { - "application": 1, - "token": "xGOsvtoNWCoKYLGs3KR6aGvdhXRgq7", - "expires": "2018-03-20T00:17:03.166Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 217 -}, -{ - "fields": { - "application": 1, - "token": "ImeCDTv4dukoDi0ecs2UDTvcD2VxhK", - "expires": "2018-03-20T00:17:03.177Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 218 -}, -{ - "fields": { - "application": 1, - "token": "90FeFVzWRL1HKKCuXBjtpxkrpA57ZS", - "expires": "2018-03-20T20:45:04.819Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 219 -}, -{ - "fields": { - "application": 1, - "token": "0Wdlg0VneNUjkzBW2lkM8bBDVLDd6h", - "expires": "2018-03-20T21:08:53.984Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 220 -}, -{ - "fields": { - "application": 1, - "token": "ENP4mHnqIqEj9QFfV31ar9cj5rcG6v", - "expires": "2018-03-20T21:08:53.985Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 221 -}, -{ - "fields": { - "application": 1, - "token": "1izmoUzlJZcyJ6FgnAtyRxpFLp2DLd", - "expires": "2018-03-20T21:08:54.080Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 222 -}, -{ - "fields": { - "application": 1, - "token": "vRlz6rLOOe1kUhZxiUF4ptVk8sE0vH", - "expires": "2018-03-20T21:28:19.590Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 223 -}, -{ - "fields": { - "application": 1, - "token": "khKlF6lnlCzivft1na6juvcgYdjCk4", - "expires": "2018-03-20T21:28:20.410Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 224 -}, -{ - "fields": { - "application": 1, - "token": "XLAVT5uVhi81TbXHtHJEONoW6K5Cut", - "expires": "2018-03-20T21:28:20.430Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 225 -}, -{ - "fields": { - "application": 1, - "token": "Z0vm49tVVIef7uvAajrylmRDSAtg6p", - "expires": "2018-03-20T21:28:20.443Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 226 -}, -{ - "fields": { - "application": 1, - "token": "7IeuNLJspUt3SLbVpf4DkmVCJJUHpB", - "expires": "2018-03-20T21:28:31.564Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 227 -}, -{ - "fields": { - "application": 1, - "token": "FLgdvMzxFSHyUnHvjd96IOK5uWU1CR", - "expires": "2018-03-20T21:28:31.591Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 228 -}, -{ - "fields": { - "application": 1, - "token": "NIOhmWXOlGv92NkhBAxIkQKMkARHPi", - "expires": "2018-03-20T21:28:31.601Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 229 -}, -{ - "fields": { - "application": 1, - "token": "ZjhGpMzryk9JBjsUugE17JtW6ZzIci", - "expires": "2018-03-20T21:29:04.549Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 230 -}, -{ - "fields": { - "application": 1, - "token": "06yJf6LUijZmAyyIyQNZ9aCxGGwCsx", - "expires": "2018-03-20T21:29:04.566Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 231 -}, -{ - "fields": { - "application": 1, - "token": "4tTMb92nSL10RNmp8DkgIpATvNuFUQ", - "expires": "2018-03-20T21:29:04.591Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 232 -}, -{ - "fields": { - "application": 1, - "token": "oLbOijy2Hba3yF9Ke945Pz66qtyBZc", - "expires": "2018-03-20T21:35:44.267Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 233 -}, -{ - "fields": { - "application": 1, - "token": "HYGhBt8uVx7nbwIVMVhdXFmo8nWkFq", - "expires": "2018-03-20T21:35:44.280Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 234 -}, -{ - "fields": { - "application": 1, - "token": "mKIdPgMled1x3LbriZJ6UYDCXFaxCn", - "expires": "2018-03-20T21:35:44.291Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 235 -}, -{ - "fields": { - "application": 1, - "token": "oeS00xzzGGEIr8pEElrQ5H5ndGlA8d", - "expires": "2018-03-20T21:38:12.648Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 236 -}, -{ - "fields": { - "application": 1, - "token": "uLuy8GzBs4Z9WK3uZA5tllOe2SFcpb", - "expires": "2018-03-20T21:38:12.659Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 237 -}, -{ - "fields": { - "application": 1, - "token": "4sQJNTlGhL19JBMaFx3n7Zmcy7ueOF", - "expires": "2018-03-20T21:38:12.668Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 238 -}, -{ - "fields": { - "application": 1, - "token": "AhBcukjMHQyfwKjL05DsBkj0xXWZB1", - "expires": "2018-03-20T21:39:07.036Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 239 -}, -{ - "fields": { - "application": 1, - "token": "rXkFbtP5MSk64NzQWSgmB5wWzNNiSj", - "expires": "2018-03-20T21:39:07.053Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 240 -}, -{ - "fields": { - "application": 1, - "token": "DCl48ZDZhUELAQEvlQpxIzPB6LsMFk", - "expires": "2018-03-20T21:39:07.065Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 241 -}, -{ - "fields": { - "application": 1, - "token": "05dQSAM3Uc65YLi0LqH3q9501KQYYs", - "expires": "2018-03-20T21:39:59.129Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 242 -}, -{ - "fields": { - "application": 1, - "token": "ilMTvtZdnor1PskF9NrNsKoTQbrLeK", - "expires": "2018-03-20T21:39:59.132Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 243 -}, -{ - "fields": { - "application": 1, - "token": "O4pIotUzqqbISnYU879InZStq2vshN", - "expires": "2018-03-20T21:39:59.140Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 244 -}, -{ - "fields": { - "application": 1, - "token": "yupKzSQ14GMjsO4jjjUmJoVC9nhtu8", - "expires": "2018-03-20T21:40:06.875Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 245 -}, -{ - "fields": { - "application": 1, - "token": "gkQtGH5D8cydZLUBGYQ3mJO4yI8zTG", - "expires": "2018-03-20T21:40:06.896Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 246 -}, -{ - "fields": { - "application": 1, - "token": "g2fUzcR1sKYhe1V3hxQjmQM2HPQlNt", - "expires": "2018-03-20T21:40:06.909Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 247 -}, -{ - "fields": { - "application": 1, - "token": "MZ5w2mk2ApnhMdNApwlMsZBuGtGow0", - "expires": "2018-03-20T22:10:04.554Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 248 -}, -{ - "fields": { - "application": 1, - "token": "bJvokeCtAXBY0BSGaJUroi5hzTxEQ6", - "expires": "2018-03-20T22:10:05.824Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 249 -}, -{ - "fields": { - "application": 1, - "token": "CLkYTxTxLGUil8kCiHmNAoy2l1golw", - "expires": "2018-03-20T22:10:05.832Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 250 -}, -{ - "fields": { - "application": 1, - "token": "AX8J8FMWmU0E6XGztTYmqqlxwF8VF3", - "expires": "2018-03-20T22:10:05.845Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 251 -}, -{ - "fields": { - "application": 1, - "token": "Np3tZZQvsGOCJ360OXH1akoa9O2ues", - "expires": "2018-03-20T22:10:14.275Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 252 -}, -{ - "fields": { - "application": 1, - "token": "8eLBqguKeH2tPKfjn6JASKFrvmWPfk", - "expires": "2018-03-20T22:10:14.287Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 253 -}, -{ - "fields": { - "application": 1, - "token": "dpAG3rrJbmviN0hfD3ymbahcMriSmK", - "expires": "2018-03-20T22:10:14.299Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 254 -}, -{ - "fields": { - "application": 1, - "token": "O8KkWqwDZTbiPeQYLxGGcj3KrSEuHw", - "expires": "2018-03-20T22:10:25.781Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 255 -}, -{ - "fields": { - "application": 1, - "token": "c3Fcyo8tS5t7vTtxFxZXQ1QLhYAUwt", - "expires": "2018-03-20T22:10:25.800Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 256 -}, -{ - "fields": { - "application": 1, - "token": "esITKL8TvJKU4dCw6hGBRohzsQlAW8", - "expires": "2018-03-20T22:10:25.820Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 257 -}, -{ - "fields": { - "application": 1, - "token": "EZCHItR7c429iOWIvqenHZVMbvNgxo", - "expires": "2018-03-20T22:10:25.976Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 258 -}, -{ - "fields": { - "application": 1, - "token": "ayxpG2k9AD1rZGc8aHtdwuN30oAem7", - "expires": "2018-03-20T22:10:25.999Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 259 -}, -{ - "fields": { - "application": 1, - "token": "DOCRLp88qvb1qP3ZFGtzVU6oid4cYV", - "expires": "2018-03-20T22:10:26.012Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 260 -}, -{ - "fields": { - "application": 1, - "token": "1G0GJvASjAg0VJIHmKE2iXyZFERMFi", - "expires": "2018-03-20T22:11:54.628Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 261 -}, -{ - "fields": { - "application": 1, - "token": "nKrOxAOysRD4XnRqrYrVBQMPVs9agN", - "expires": "2018-03-20T22:11:54.641Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 262 -}, -{ - "fields": { - "application": 1, - "token": "3lZdUoEZQpTb9t9jiVxuGDMNIuC8Cr", - "expires": "2018-03-20T22:11:54.651Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 263 -}, -{ - "fields": { - "application": 1, - "token": "v5VbCM3hDpAthYYW6WR2k83mauVAfv", - "expires": "2018-03-21T03:42:22.466Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 264 -}, -{ - "fields": { - "application": 1, - "token": "76OASUF7OEY9om083YMF70OahRSMRP", - "expires": "2018-03-21T03:42:22.491Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 265 -}, -{ - "fields": { - "application": 1, - "token": "aNlAKqSnBbbD5h1DFxIJZMJnVV4wqf", - "expires": "2018-03-21T03:42:22.503Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 266 -}, -{ - "fields": { - "application": 1, - "token": "kUjKGjLzZCV5Vacqs4KmDN9gfvWHIJ", - "expires": "2018-03-21T03:45:25.742Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 267 -}, -{ - "fields": { - "application": 1, - "token": "THHslGhsmHbDSXcgEerfIwIUrfL1jH", - "expires": "2018-03-21T03:45:25.760Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 268 -}, -{ - "fields": { - "application": 1, - "token": "Yx8gveI4FAe95OEkcD05dW6z0jbi2b", - "expires": "2018-03-21T03:45:25.772Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 269 -}, -{ - "fields": { - "application": 1, - "token": "YiDD4uzaXC2ID33Wv0l1t6TlyspnQM", - "expires": "2018-03-21T03:56:10.882Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 270 -}, -{ - "fields": { - "application": 1, - "token": "x2jiSCSiJJfRfnRI7wd0X0oTnJ2Qck", - "expires": "2018-03-21T03:56:10.896Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 271 -}, -{ - "fields": { - "application": 1, - "token": "bxJNtEg3Ba0HHHpIpPifK4XecUDsfi", - "expires": "2018-03-21T03:56:10.907Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 272 -}, -{ - "fields": { - "application": 1, - "token": "n5CEwfrJUxyXqvfJwRRqiVrMmXOqB9", - "expires": "2018-03-21T03:58:10.025Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 273 -}, -{ - "fields": { - "application": 1, - "token": "7jDQYqeL975OmTu38OoIme5ycPwNjN", - "expires": "2018-03-21T03:58:12.343Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 274 -}, -{ - "fields": { - "application": 1, - "token": "GUs92jR71OCaDBdfMSag20Gyft88AY", - "expires": "2018-03-21T03:58:12.360Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 275 -}, -{ - "fields": { - "application": 1, - "token": "YUCvYHrfse3njSBP5ajCrF9aij7Qst", - "expires": "2018-03-21T03:58:12.365Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 276 -}, -{ - "fields": { - "application": 1, - "token": "NGFpSO2i5E9FILdrlEdFwUggh7ISTs", - "expires": "2018-03-21T04:00:00.612Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 277 -}, -{ - "fields": { - "application": 1, - "token": "owKcfAZmDdZIopRjxwRU3jPO4M8txj", - "expires": "2018-03-21T04:00:00.625Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 278 -}, -{ - "fields": { - "application": 1, - "token": "hDe1yxPccjbuJMQqyQnPtGd2hetNH8", - "expires": "2018-03-21T04:00:00.637Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 279 -}, -{ - "fields": { - "application": 1, - "token": "h9ENMOmB9L0d9EckcFHBD4qI9O3BeF", - "expires": "2018-03-21T04:59:42.409Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 280 -}, -{ - "fields": { - "application": 1, - "token": "8PjrDQhg5isxX2AuDmmOvD2STZBkrp", - "expires": "2018-03-21T04:59:42.429Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 281 -}, -{ - "fields": { - "application": 1, - "token": "TnK8wBFpUhul3XWrc59jdApTWzp6bi", - "expires": "2018-03-21T04:59:42.440Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 282 -}, -{ - "fields": { - "application": 1, - "token": "xKbSPmLu94YPZKpPxnirUgi79c3h1K", - "expires": "2018-03-21T05:21:00.667Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 283 -}, -{ - "fields": { - "application": 1, - "token": "c3uQ8jpuBaVF4z0LFTWbCyJE63LpqX", - "expires": "2018-03-21T05:21:02.224Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 284 -}, -{ - "fields": { - "application": 1, - "token": "NzQMP3uYeHzNk1nqEIVyZZnGF4185a", - "expires": "2018-03-21T05:21:02.226Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 285 -}, -{ - "fields": { - "application": 1, - "token": "kx5EWPBlLB3P6E7J8a7TyI5iGw93pH", - "expires": "2018-03-21T05:21:02.243Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 286 -}, -{ - "fields": { - "application": 1, - "token": "mOnH4BJNHMbyJGbM5NM0YbgzlRiryp", - "expires": "2018-03-21T05:30:50.212Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 287 -}, -{ - "fields": { - "application": 1, - "token": "JgHkLFF0QPKX1o23nRgJgFpdMM9vJQ", - "expires": "2018-03-21T05:30:50.226Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 288 -}, -{ - "fields": { - "application": 1, - "token": "FCpQviSg6xRN614LYe16ncDmOrLKWM", - "expires": "2018-03-21T05:30:50.236Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 289 -}, -{ - "fields": { - "application": 1, - "token": "TezJ5uRTMnxrWhdfE9bpwJ85wuiHv2", - "expires": "2018-03-21T05:30:52.195Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 290 -}, -{ - "fields": { - "application": 1, - "token": "VYyGfOUhFKsdhTo4A6aP0pWThJaVKO", - "expires": "2018-03-21T05:31:08.232Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 291 -}, -{ - "fields": { - "application": 1, - "token": "r3QrgGE9CLOFWmAOpGHcVLnSWFVTyD", - "expires": "2018-03-21T05:31:08.400Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 292 -}, -{ - "fields": { - "application": 1, - "token": "FH54UUpEsNlCgLrNDf1gHdYmRc138e", - "expires": "2018-03-21T05:31:08.414Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 293 -}, -{ - "fields": { - "application": 1, - "token": "haLrbnxE0dVte6zmwGZp9N2SEuGECu", - "expires": "2018-03-21T05:31:08.423Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 294 -}, -{ - "fields": { - "application": 1, - "token": "KOFFLEbs8RWBsesT7d0jq2ROBjFsas", - "expires": "2018-03-21T22:15:49.387Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 295 -}, -{ - "fields": { - "application": 1, - "token": "WduDcOpjzzIW7xIiFZPesCDATnobfd", - "expires": "2018-03-21T22:17:24.931Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 296 -}, -{ - "fields": { - "application": 1, - "token": "F6pf6qH15WhMw4PwruNkyX2kAeQ1gh", - "expires": "2018-03-21T22:17:24.942Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 297 -}, -{ - "fields": { - "application": 1, - "token": "vS6oFYa7vRvda9xsMy63DldguQpf1I", - "expires": "2018-03-21T22:17:24.948Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 298 -}, -{ - "fields": { - "application": 1, - "token": "og733cURhFOhkJajdpwJsfycpd4jx8", - "expires": "2018-03-21T23:01:01.607Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 299 -}, -{ - "fields": { - "application": 1, - "token": "9uiBnZ0eI3b8AepXi3Qbdmh1HeoaMq", - "expires": "2018-03-21T23:01:04.705Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 300 -}, -{ - "fields": { - "application": 1, - "token": "kEBHCDtJ1qdFnN5NPIMF16AIBqvLcX", - "expires": "2018-03-21T23:01:04.705Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 301 -}, -{ - "fields": { - "application": 1, - "token": "wuEfV9CUr9Q3GX1PT8zsqKFgN4PYFf", - "expires": "2018-03-21T23:01:04.723Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 302 -}, -{ - "fields": { - "application": 1, - "token": "hHLnADBapDEsdwEjQ2fJ5nULHSZzLo", - "expires": "2018-03-25T00:11:59.858Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 303 -}, -{ - "fields": { - "application": 1, - "token": "WpqYGCVBgN2sNFc5YmmEIhAIFCFFOg", - "expires": "2018-03-25T06:13:01.467Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 304 -}, -{ - "fields": { - "application": 1, - "token": "AhxSV1W5pWmfrPukKNM1X4oVAZG4i5", - "expires": "2018-03-26T00:16:49.691Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 305 -}, -{ - "fields": { - "application": 1, - "token": "k1wo7h2XVflur8FsOJsE7X6QIePS5d", - "expires": "2018-03-26T00:49:17.302Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 306 -}, -{ - "fields": { - "application": 1, - "token": "pjozLRrFxczMNj7nYgSkqgHVyxXBCJ", - "expires": "2018-03-26T00:49:17.318Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 307 -}, -{ - "fields": { - "application": 1, - "token": "PKQtJor9ix2tZ4JCIKAfolJAAkmm37", - "expires": "2018-03-26T00:49:17.334Z", - "user": null, - "scope": "read write" - }, - "model": "oauth2_provider.accesstoken", - "pk": 308 -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:13:22.543Z", - "next_attempt": 1521994402.50743, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:12:57.387Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "00b83361-26cb-4f17-b330-099f85ad68b5" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:40:42.463Z", - "next_attempt": 1521996042.42737, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:40:17.310Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "0143ffd4-78d0-4ffb-b9a0-89cd8b10644a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:54:27.927Z", - "next_attempt": 1521917667.88489, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:54:02.738Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "01d03a9c-8079-4f33-8c84-aa0a4d3f56dc" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:56:44.182Z", - "next_attempt": 1521997004.14882, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:56:19.020Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "04f055bf-7319-40c4-a4c6-ef42082fe835" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:59:35.750Z", - "next_attempt": 1521997175.7191, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:59:10.578Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "062549f4-f555-423b-8b57-37d998d2a9b7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:28:45.374Z", - "next_attempt": 1521905325.3395, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:28:20.206Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "09a2c5a3-d6d7-450d-acb7-5f6624479137" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:41:50.498Z", - "next_attempt": 1521916910.45794, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:41:25.319Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "0c696f13-b6c8-4e99-bd28-388789c2242e" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:20:03.254Z", - "next_attempt": 1521379203.23247, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:19:38.137Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "0d774bba-a598-4110-ac4d-35ce19f8d245" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:27:41.549Z", - "next_attempt": 1521988061.51222, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:27:16.361Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "0edc0567-ad28-4609-b82c-5e4a7223580a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:29:34.867Z", - "next_attempt": 1521908974.83836, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:29:09.690Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "1094fdeb-75ed-402a-8a12-8ba23823fd52" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:54:58.488Z", - "next_attempt": 1521921298.44952, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:54:33.301Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "167e7183-1d29-4e7e-a2c5-6861ff8e2d35" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:47:34.269Z", - "next_attempt": 1521989254.23945, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:47:09.123Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "171b8954-10fd-4787-a420-ea99f75c40f0" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T13:27:54.890Z", - "next_attempt": 1521379674.8701, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T13:27:29.790Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "172d7ed3-77ea-4b2f-921a-eeb44aafe287" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:29:43.555Z", - "next_attempt": 1521988183.51612, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:29:18.365Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "1988fb73-767b-42ba-be36-d1bdb44bc847" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-25T13:22:00.146Z", - "next_attempt": 1521987720.11837, - "args": "(I1\ntp0\n.", - "created": "2018-03-25T13:21:34.512Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "1a709ba2-5b3a-463d-b615-73db9391ec61" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-14T16:08:57.492Z", - "next_attempt": 1521043737.47141, - "args": "(I1\ntp0\n.", - "created": "2018-03-14T16:08:32.091Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "1b0c0270-4995-4420-9ff7-b27818694c5f" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T12:08:56.653Z", - "next_attempt": 1521374936.63265, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T12:08:31.549Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "1f14aa8d-3e5d-4a75-8efa-f8f69ab01477" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:19:32.507Z", - "next_attempt": 1521379172.50168, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:19:07.417Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "1f660ffe-f833-4ddc-9a00-01dd2ceba26e" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:27:36.104Z", - "next_attempt": 1521988056.06183, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:27:10.935Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "2094d78e-053f-4865-939c-347491419ebe" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-24T20:15:55.662Z", - "next_attempt": 1521922555.64152, - "args": "(I1\ntp0\n.", - "created": "2018-03-24T20:15:30.082Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "22c7e856-f13b-4c22-9071-71b7539da8f6" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-20T19:39:25.959Z", - "next_attempt": 1521574765.93873, - "args": "(I1\ntp0\n.", - "created": "2018-03-20T19:39:00.531Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "23339d1e-2696-4b25-a2dc-cff144905693" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:50:36.341Z", - "next_attempt": 1522000236.3055, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:50:11.192Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "2353abdd-0f42-4680-81dd-6658bb4d77b0" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:27:12.461Z", - "next_attempt": 1521905232.42728, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:26:47.283Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "23b6121f-44a8-4dd9-8066-b1f1d6869de8" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T17:00:11.618Z", - "next_attempt": 1522000811.57996, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:59:46.445Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "25f31616-d23f-4c82-b83e-02edf4cadba7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:23:40.358Z", - "next_attempt": 1521908620.32423, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:23:15.193Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "27761402-6f4f-40f0-9d32-41d5c6611010" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:19:49.402Z", - "next_attempt": 1521379189.3841, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:19:24.301Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "279500f4-de00-463e-b44a-8f060eb59c78" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:13:45.648Z", - "next_attempt": 1521990825.6177, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:13:20.498Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "29af1471-e0eb-4a40-b7ec-56622c5c5024" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T18:43:57.710Z", - "next_attempt": 1521398637.69428, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T18:43:32.318Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "2bd65e5c-0b71-4b87-b7c3-77ff2477b7c0" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:27:34.697Z", - "next_attempt": 1521919654.66435, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:27:09.530Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "2fbef552-92f5-4cbe-9e3c-764256e4113e" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:21:45.736Z", - "next_attempt": 1521998505.70267, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:21:20.571Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "300df13a-0117-4ae5-b202-22fac724e973" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:29:38.096Z", - "next_attempt": 1521988178.0572, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:29:12.929Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "31719cb6-2e42-4491-9a52-3061069906d5" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:45:22.920Z", - "next_attempt": 1521989122.88324, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:44:57.740Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "33f52659-37f2-4350-9806-bfba36959fb2" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:21:12.526Z", - "next_attempt": 1521919272.489, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:20:47.343Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "3404ee20-1987-4943-b9f9-10e0911c1eca" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:51:17.291Z", - "next_attempt": 1521921077.26094, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:50:52.129Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "347ee8fc-b888-4448-a967-db50e148a67d" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:48:40.306Z", - "next_attempt": 1522000120.2721, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:48:15.119Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "3d35edbd-c886-4b11-88fb-9f9f4f7df9df" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T17:00:06.151Z", - "next_attempt": 1522000806.11611, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:59:40.991Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "3ea3815c-d35f-4348-af33-21c0867df42f" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:19:06.174Z", - "next_attempt": 1521998346.13704, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:18:40.988Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "3f1d3ac6-b0e5-406d-9333-1de6daeb514b" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-25T17:16:32.693Z", - "next_attempt": 1522001792.67188, - "args": "(I1\ntp0\n.", - "created": "2018-03-25T17:16:07.571Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "40831968-5fb9-472b-9d3d-292b5a21aaea" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:23:16.643Z", - "next_attempt": 1521994996.60648, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:22:51.479Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "40bbcedf-fa07-40f7-ab83-4d881c18b288" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:13:28.023Z", - "next_attempt": 1521994407.99142, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:13:02.851Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "40bce298-4889-43ab-b0b5-d4283e59d677" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:20:09.971Z", - "next_attempt": 1521379209.95472, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:19:44.866Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "458223c3-4a3a-4241-8cac-7cfc25f59b44" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:09:02.572Z", - "next_attempt": 1521918542.53736, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:08:37.405Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "46a988d3-cd0b-4445-ab2f-1b6b3f2f3269" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:11:48.657Z", - "next_attempt": 1521918708.62135, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:11:23.481Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "47273f53-2fc5-41fb-9d7d-8c33687e39f7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:34:55.452Z", - "next_attempt": 1521995695.41873, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:34:30.284Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "484cb897-9c6a-4a94-bd0a-161913b703e7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T20:15:49.579Z", - "next_attempt": 1521922549.55198, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T20:15:24.428Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "48b42bb5-b6ae-4a3b-b8d8-4589107e1f5a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T17:16:21.689Z", - "next_attempt": 1522001781.65416, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T17:15:56.566Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "497d1fc7-e8e3-41ca-8e12-eb472c4d8e60" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:19:38.010Z", - "next_attempt": 1521994777.97682, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:19:12.843Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "4b3a40f1-da0f-4960-a740-ad602475aac3" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start --full-balance -f /mnt2/mock-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/mock-pool': No such file or directory\", '']", - "failed": "2018-03-20T18:52:54.357Z", - "next_attempt": 1521571974.32504, - "args": "(S'/mnt2/mock-pool'\np0\ntp1\n.", - "created": "2018-03-20T18:52:29.210Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nNsS'force'\np2\nVtrue\np3\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "4bb6e640-d579-4d8e-91d4-96124dd7d233" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:35:14.210Z", - "next_attempt": 1521916514.17739, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:34:49.057Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "506037d4-5ef9-43ee-9222-5e8c2d9bdbc2" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:59:43.249Z", - "next_attempt": 1521907183.21228, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:59:18.060Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "5407eaa9-c1b2-4ea9-8c80-25dde6ec919e" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start --full-balance -f /mnt2/mock-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/mock-pool': No such file or directory\", '']", - "failed": "2018-03-20T18:51:04.559Z", - "next_attempt": 1521571864.52854, - "args": "(S'/mnt2/mock-pool'\np0\ntp1\n.", - "created": "2018-03-20T18:50:39.403Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nNsS'force'\np2\nVtrue\np3\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "5611a081-b26f-416e-bbcd-8b88489cf966" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:06:13.848Z", - "next_attempt": 1521918373.81093, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:05:48.667Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "56a8f8a7-75d2-4686-b86b-cac3ca504277" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:45:17.426Z", - "next_attempt": 1521989117.39525, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:44:52.274Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "574a0bdd-22e0-4d93-98d8-c34607eff8b3" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:02:31.580Z", - "next_attempt": 1521997351.5451, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:02:06.410Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "5790711b-ce9e-4399-8c9b-5aedbb9aa863" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:08:51.207Z", - "next_attempt": 1521994131.17631, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:08:26.040Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "5835f01c-a618-42a4-9b03-af9369105356" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:53:25.873Z", - "next_attempt": 1521906805.83455, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:53:00.697Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "5de16a7e-57ce-4a5f-b706-3a1429635dbd" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:22:54.628Z", - "next_attempt": 1521987774.59632, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:22:29.475Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "646414d3-d00a-4767-b7f0-56f57f976a2c" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:02:26.149Z", - "next_attempt": 1521997346.11219, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:02:01.000Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "651e7cce-d7a5-4e23-a39f-31c1bc48f3af" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-17T19:23:43.649Z", - "next_attempt": 1521314623.62692, - "args": "(I1\ntp0\n.", - "created": "2018-03-17T19:23:18.265Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "671c2f55-e502-448a-9634-7036d96ebed8" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:08:45.708Z", - "next_attempt": 1521994125.67212, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:08:20.564Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "68921a7a-cf1a-48a8-8110-ff5867976fed" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:37:41.900Z", - "next_attempt": 1521920261.85979, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:37:16.719Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "7294e4ac-73ab-4a64-abe8-8e85b375e566" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:11:50.475Z", - "next_attempt": 1521994310.43745, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:11:25.300Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "752057f1-9692-4f5a-a818-3b59cfba27b7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:21:51.189Z", - "next_attempt": 1521998511.15541, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:21:26.009Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "7945a053-f97f-40bf-93ae-2666f25e5d71" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:15:26.081Z", - "next_attempt": 1521990926.04797, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:15:00.915Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "7c277fa0-067e-49c2-b6ea-3928911586d9" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:19:16.016Z", - "next_attempt": 1521379156.00938, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:18:50.954Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "7c30b0af-5e9e-412b-9b94-f437a0da4638" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:47:49.799Z", - "next_attempt": 1521996469.76421, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:47:24.661Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "7da691a0-fb6f-4cc5-9978-b0c971fb9e40" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:26:30.099Z", - "next_attempt": 1521995190.06734, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:26:04.946Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "7fbf2168-ae51-42da-90da-3d59b641ab9b" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:17:20.680Z", - "next_attempt": 1521919040.64701, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:16:55.518Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "857eaf72-1a3d-41f3-9d30-54c72d432fe0" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-20T12:59:28.258Z", - "next_attempt": 1521550768.23797, - "args": "(I1\ntp0\n.", - "created": "2018-03-20T12:59:02.872Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "85803317-9b9e-4a1e-bd6a-0eb0d9ae28ad" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T16:58:24.183Z", - "next_attempt": 1521392304.15761, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T16:57:59.065Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "86accca4-36f8-4623-8a38-7d01abf3a0e8" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T16:59:33.768Z", - "next_attempt": 1521392373.73796, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T16:59:08.650Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "87ee6544-ee7d-46c2-864c-f35d1486c49f" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:23:22.085Z", - "next_attempt": 1521995002.05011, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:22:56.909Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "89c805ee-006b-4b00-b32b-efa40d43be30" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:34:01.434Z", - "next_attempt": 1521988441.39463, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:33:36.271Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "8abf751d-49cd-4f4b-991f-381821c4c386" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T20:01:19.233Z", - "next_attempt": 1521921679.1996, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T20:00:54.066Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "8eb674e3-ffd5-42bc-8e48-ef8ff5b369bf" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:50:43.800Z", - "next_attempt": 1521906643.76936, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:50:18.649Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "8f8f7033-6171-4fa6-b6aa-00e66770ff77" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:28:36.956Z", - "next_attempt": 1521908916.92706, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:28:11.804Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "8fc35fd3-481f-4bf1-9f33-a9bef1ce4210" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-11T16:04:56.316Z", - "next_attempt": 1520784296.28937, - "args": "(I1\ntp0\n.", - "created": "2018-03-11T16:04:30.909Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "937eae0f-3063-4aed-91c4-55c93d1576ad" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T11:59:11.356Z", - "next_attempt": 1521374351.337, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T11:58:45.942Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "957ef38d-524d-4579-a5e4-68fda740edee" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T17:31:27.049Z", - "next_attempt": 1521912687.01453, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T17:31:01.894Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "97418363-dff3-4917-8176-44775bb7c2fd" -}, -{ - "fields": { - "last_exception": "Not a gzipped file", - "failed": "2018-03-18T13:18:37.763Z", - "next_attempt": 1521379117.74259, - "args": "(I4\ntp0\n.", - "created": "2018-03-18T13:18:12.660Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "9dc0521e-8ca8-4c7f-a1c5-136db8bd9059" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:27:22.637Z", - "next_attempt": 1521916042.60379, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:26:57.483Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "9dec7673-ef2a-4fe8-a56d-7fa7ef038137" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:02:17.809Z", - "next_attempt": 1521990137.77134, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:01:52.630Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "9e584503-37a1-4a01-aaec-4cafd297df43" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:46:42.902Z", - "next_attempt": 1521989202.85548, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:46:17.711Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "a10d8d26-1d65-4b63-8066-ceb4425f28be" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:50:41.826Z", - "next_attempt": 1522000241.78648, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:50:16.647Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "a1295538-fe30-42c1-a6c2-75d7f51cbd31" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:46:16.057Z", - "next_attempt": 1521996376.0299, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:45:50.895Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "a1a8aaa3-42db-4431-9258-402471636c62" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:46:21.480Z", - "next_attempt": 1521996381.44752, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:45:56.314Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "a37adb21-af4a-4f12-a24b-83f019c7a0b7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:56:38.756Z", - "next_attempt": 1521996998.72263, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:56:13.615Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "a73e1493-1693-496b-92e6-d7229fd31ba8" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T15:57:47.989Z", - "next_attempt": 1521907067.94554, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T15:57:22.808Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ad943cc0-9c1b-475b-9e5f-6163758cb333" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:52:12.788Z", - "next_attempt": 1521917532.74814, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:51:47.602Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "aff4a100-8bc8-43dd-8c9e-a818dbe9700a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:34:49.997Z", - "next_attempt": 1521995689.96509, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:34:24.851Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "b00e2c23-b007-41b6-8703-2d042d52c890" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:02:12.357Z", - "next_attempt": 1521990132.32313, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:01:47.205Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "b03c143c-6cd4-442d-ad77-5dab6bc55d20" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:42:23.802Z", - "next_attempt": 1521996143.77236, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:41:58.664Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "b213bb92-f1c3-4526-af7a-e667576f5c56" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start --full-balance -f /mnt2/mock-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/mock-pool': No such file or directory\", '']", - "failed": "2018-03-20T18:47:53.590Z", - "next_attempt": 1521571673.55335, - "args": "(S'/mnt2/mock-pool'\np0\ntp1\n.", - "created": "2018-03-20T18:47:28.428Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nNsS'force'\np2\nVtrue\np3\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "b4e9ceef-9231-4ccc-9ea9-3c03c229ee31" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T17:59:57.056Z", - "next_attempt": 1521914397.03145, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T17:59:31.911Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "b6eb337d-98a1-41c0-81a8-b5369a512319" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T16:55:00.826Z", - "next_attempt": 1521392100.80403, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T16:54:35.430Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "b890350e-aff6-46e9-9885-a2540c44c216" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:35:59.647Z", - "next_attempt": 1521920159.60934, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:35:34.444Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "bcc518ba-e654-4f4f-8df5-c1753e3d2530" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T20:10:57.193Z", - "next_attempt": 1521922257.16172, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T20:10:32.041Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "c01402e0-7fb5-4e1d-901e-9d584ee42bd3" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:47:39.749Z", - "next_attempt": 1521989259.71367, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:47:14.583Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "c114b3c7-9384-4359-abae-3e29d0fc6d68" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:46:37.433Z", - "next_attempt": 1521989197.39781, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:46:12.278Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "c5da6769-3078-4d7e-bc14-09a17c9f83ce" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:06:44.558Z", - "next_attempt": 1521994004.52166, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:06:19.370Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "c79b0b52-04f3-4a47-ab96-618371081e74" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:42:29.277Z", - "next_attempt": 1521996149.24141, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:42:04.114Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "c7fdc921-0779-46fe-b885-ce5c6c66af8a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:11:45.020Z", - "next_attempt": 1521994304.98674, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:11:19.872Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "cb49fae1-fbe2-4329-b826-6446ac6d0564" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T17:16:27.075Z", - "next_attempt": 1522001787.04618, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T17:16:01.902Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "cc8f15c2-2d6e-4282-b976-cce30ed015b7" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:14:19.205Z", - "next_attempt": 1521918859.17023, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:13:54.043Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ccd9535a-b293-4cb3-93b9-16174b4fbed2" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:45:33.709Z", - "next_attempt": 1521917133.67363, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:45:08.555Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ceb3e11b-bf59-4f73-8ede-2c84dc2f842a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:34:06.868Z", - "next_attempt": 1521988446.83042, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:33:41.677Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d07d61b8-2e89-49ec-99f9-89fbedf9754a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:19:00.655Z", - "next_attempt": 1521998340.61878, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:18:35.505Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d29f984e-f2a5-49e4-b87d-5b3e8b963e9f" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:26:12.018Z", - "next_attempt": 1521919571.98934, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:25:46.867Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d3bde834-6636-437c-a319-50240055655a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:06:05.553Z", - "next_attempt": 1521907565.52071, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:05:40.388Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d586016e-3ea7-40f4-989f-a178a196edfb" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:59:30.293Z", - "next_attempt": 1521997170.2597, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:59:05.134Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d69191d0-d9fb-44c3-b0f6-db4b400b61c5" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:28:50.437Z", - "next_attempt": 1521995330.40026, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:28:25.252Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d70639f5-36dc-4676-86ba-1ef852cb6b1a" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:57:29.195Z", - "next_attempt": 1521921449.15618, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:57:04.022Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d8735351-625f-4135-a988-221aba22f318" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:19:56.963Z", - "next_attempt": 1521908396.92896, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:19:31.793Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d9474f4b-18f8-4f39-9feb-840c66c36386" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:47:55.244Z", - "next_attempt": 1521996475.2108, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:47:30.082Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "d98887de-cf1f-4e93-90af-51592781755e" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:07:46.687Z", - "next_attempt": 1521918466.65228, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:07:21.510Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "dd0e18c2-56ed-4915-ad15-c10be66fb94f" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:40:47.956Z", - "next_attempt": 1521996047.92192, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:40:22.787Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "de72b2c3-ae41-4832-a848-5793242faccd" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:49:04.071Z", - "next_attempt": 1521917344.03517, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:48:38.920Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "de770957-fb5a-4b3d-aac4-036812d3cffa" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-19T19:38:40.400Z", - "next_attempt": 1521488320.37742, - "args": "(I1\ntp0\n.", - "created": "2018-03-19T19:38:15.010Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "de779921-5e9a-436d-ad0c-2c3591bb6323" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T16:03:01.583Z", - "next_attempt": 1521907381.55362, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T16:02:36.424Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "e1cb27db-ab9d-4e7d-9f1d-4b9e4e422fd8" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:19:32.491Z", - "next_attempt": 1521994772.46042, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:19:07.341Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "e71c426a-178d-498c-bcb9-786ad0117fe5" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:44:28.812Z", - "next_attempt": 1521996268.77943, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:44:03.655Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "e7b908a3-a304-4af2-80ea-d35d1bb3a8ae" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:53:18.668Z", - "next_attempt": 1521917598.63354, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:52:53.498Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ebb8535b-7428-401f-a388-5d43706bdc0c" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:13:51.208Z", - "next_attempt": 1521990831.17226, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:13:26.029Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ebf96b31-c681-40b0-85c9-46af271331e6" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:44:34.223Z", - "next_attempt": 1521996274.19199, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:44:09.052Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ecdbfddc-9c0d-4af8-83ba-106ed153ebab" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:48:34.833Z", - "next_attempt": 1522000114.79585, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:48:09.660Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "ee3922f2-ddf8-4973-8471-d8df32f7ae02" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:49:48.998Z", - "next_attempt": 1522000188.96559, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:49:23.835Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "eec36cf5-127e-4978-91e8-0436ca6dee65" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T14:15:20.569Z", - "next_attempt": 1521990920.53836, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T14:14:55.426Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f42573b2-7162-4adf-974d-27e02e1754e6" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:06:39.095Z", - "next_attempt": 1521993999.06047, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:06:13.931Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f568abd5-c991-4043-9e31-c759c3400448" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T20:02:21.985Z", - "next_attempt": 1521921741.9522, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T20:01:56.813Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f57de3e3-ac21-464b-a4f9-6fe846abd6a1" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T13:21:54.042Z", - "next_attempt": 1521987714.00951, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T13:21:28.889Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f580f7cd-ab88-4ee9-84b6-b9f56468f2f5" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:28:44.985Z", - "next_attempt": 1521995324.9498, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:28:19.824Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f64e87e7-6004-4001-8cb3-395788c4d622" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T16:49:54.396Z", - "next_attempt": 1522000194.36532, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T16:49:29.229Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f74d767f-99ea-4a25-a646-4a9d77a1ab92" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T18:43:15.041Z", - "next_attempt": 1521916995.00493, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T18:42:49.883Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f76bbc37-29b6-444c-922e-408c82093312" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:33:22.163Z", - "next_attempt": 1521995602.12819, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:32:56.998Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "f8e1f06e-fc8a-4d37-abf6-c16c47807f79" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:33:27.590Z", - "next_attempt": 1521995607.55636, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:33:02.416Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "fa671d6f-ad1e-43d0-815c-306c1931d2e6" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-25T15:26:35.562Z", - "next_attempt": 1521995195.53174, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-25T15:26:10.400Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid1\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "fa67a519-c0ae-4c35-9841-8041b6775296" -}, -{ - "fields": { - "last_exception": "Error running a command. cmd = btrfs balance start -mconvert=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']", - "failed": "2018-03-24T19:10:01.484Z", - "next_attempt": 1521918601.44478, - "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.", - "created": "2018-03-24T19:09:36.307Z", - "retry_count": 0, - "kwargs": "(dp0\nS'convert'\np1\nVraid0\np2\nsS'force'\np3\nI00\ns.", - "function_name": "fs.btrfs.start_balance" - }, - "model": "django_ztask.task", - "pk": "fb693d24-00c4-4e30-9df6-d028abb077a6" -}, -{ - "fields": { - "last_exception": "ConfigBackup matching query does not exist.", - "failed": "2018-03-18T12:01:00.162Z", - "next_attempt": 1521374460.14093, - "args": "(I1\ntp0\n.", - "created": "2018-03-18T12:00:35.056Z", - "retry_count": 0, - "kwargs": "(dp0\n.", - "function_name": "storageadmin.views.config_backup.restore_config" - }, - "model": "django_ztask.task", - "pk": "fd88ca0e-f711-4cea-bc42-7ac8b1e6806c" -} -] diff --git a/src/rockstor/storageadmin/models/__init__.py b/src/rockstor/storageadmin/models/__init__.py index a5941282d..2f537b84b 100644 --- a/src/rockstor/storageadmin/models/__init__.py +++ b/src/rockstor/storageadmin/models/__init__.py @@ -40,7 +40,6 @@ from plugin import Plugin # noqa E501 from adv_nfs_exports import AdvancedNFSExport # noqa E501 from oauth_app import OauthApp # noqa E501 -from netatalk_share import NetatalkShare # noqa E501 from pool_balance import PoolBalance # noqa E501 from tls_certificate import TLSCertificate # noqa E501 from rockon import (RockOn, DImage, DContainer, DPort, DVolume, # noqa E501 diff --git a/src/rockstor/storageadmin/models/netatalk_share.py b/src/rockstor/storageadmin/models/netatalk_share.py deleted file mode 100644 index 135cd7712..000000000 --- a/src/rockstor/storageadmin/models/netatalk_share.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Copyright (c) 2012-2014 RockStor, Inc. -This file is part of RockStor. - -RockStor is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -RockStor is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from django.db import models - - -class NetatalkShare(models.Model): - YES = 'yes' - NO = 'no' - """share that is exported""" - share = models.OneToOneField('Share', related_name='netatalkshare') - """mount point of the share""" - path = models.CharField(max_length=4096, unique=True) - description = models.CharField(max_length=1024, default='afp on rockstor') - BOOLEAN_CHOICES = ( - (YES, 'yes'), - (NO, 'no'), - ) - time_machine = models.CharField(max_length=3, choices=BOOLEAN_CHOICES, - default=YES) - - def share_name(self, *args, **kwargs): - return self.share.name - - def share_id(self, *args, **kwargs): - return self.share.id - - @property - def vol_size(self): - return self.share.size - - class Meta: - app_label = 'storageadmin' diff --git a/src/rockstor/storageadmin/models/share.py b/src/rockstor/storageadmin/models/share.py index 209080944..52e236dff 100644 --- a/src/rockstor/storageadmin/models/share.py +++ b/src/rockstor/storageadmin/models/share.py @@ -18,14 +18,10 @@ from django.conf import settings from django.db import models -from django.db.models.signals import (post_save, post_delete) -from django.dispatch import receiver from fs.btrfs import qgroup_exists from storageadmin.models import Pool from system.osi import mount_status -from .netatalk_share import NetatalkShare -from system.services import (systemctl, refresh_afp_config) RETURN_BOOLEAN = True @@ -97,26 +93,3 @@ def pqgroup_exist(self, *args, **kwargs): class Meta: app_label = 'storageadmin' - - -def refresh_afp(): - refresh_afp_config(list(NetatalkShare.objects.all())) - systemctl('netatalk', 'reload-or-restart') - - -@receiver(post_save, sender=Share, dispatch_uid='update_afp') -def update_afp(sender, instance, **kwargs): - try: - # throws exception and short circuits if netatalkshare doesn't exist. - instance.netatalkshare - refresh_afp() - except Exception: - pass - - -@receiver(post_delete, sender=Share, dispatch_uid='clean_afp') -def clean_afp(sender, instance, **kwargs): - try: - refresh_afp() - except Exception: - pass diff --git a/src/rockstor/storageadmin/serializers.py b/src/rockstor/storageadmin/serializers.py index d2e3ec150..b4264b5ab 100644 --- a/src/rockstor/storageadmin/serializers.py +++ b/src/rockstor/storageadmin/serializers.py @@ -22,7 +22,7 @@ SupportCase, DashboardConfig, NetworkDevice, NetworkConnection, User, PoolScrub, Setup, NFSExportGroup, SFTP, AdvancedNFSExport, - OauthApp, NetatalkShare, Group, PoolBalance, + OauthApp, Group, PoolBalance, SambaCustomConfig, TLSCertificate, RockOn, DContainer, DVolume, DPort, DCustomConfig, DContainerEnv, DContainerDevice, DContainerLabel, @@ -221,14 +221,6 @@ class Meta: model = OauthApp -class NetatalkShareSerializer(serializers.ModelSerializer): - share = serializers.CharField(source='share_name') - share_id = serializers.CharField() - - class Meta: - model = NetatalkShare - - class TLSCertificateSerializer(serializers.ModelSerializer): class Meta: model = TLSCertificate diff --git a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js index ab01bcea8..b16ec3e1d 100644 --- a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js +++ b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js @@ -645,16 +645,6 @@ var SFTPCollection = RockStorPaginatedCollection.extend({ }); -var AFP = Backbone.Model.extend({ - urlRoot: '/api/netatalk' -}); - -var AFPCollection = RockStorPaginatedCollection.extend({ - model: AFP, - baseUrl: '/api/netatalk' -}); - - var ReplicaReceive = Backbone.Model.extend({ urlRoot: '/api/sm/replicareceives' }); diff --git a/src/rockstor/storageadmin/static/storageadmin/js/router.js b/src/rockstor/storageadmin/static/storageadmin/js/router.js index 6cc1e0393..f153aa5ec 100644 --- a/src/rockstor/storageadmin/static/storageadmin/js/router.js +++ b/src/rockstor/storageadmin/static/storageadmin/js/router.js @@ -96,9 +96,6 @@ var AppRouter = Backbone.Router.extend({ 'version': 'showVersion', 'sftp': 'showSFTP', 'add-sftp-share': 'addSFTPShare', - 'afp': 'showAFP', - 'add-afp-share': 'addAFPShare', - 'afp/edit/:afpShareId': 'editAFPShare', 'rockons': 'showRockons', 'shell': 'showShell', 'images': 'showImages', @@ -676,32 +673,6 @@ var AppRouter = Backbone.Router.extend({ $('#maincontent').append(this.currentLayout.render().el); }, - showAFP: function() { - this.renderSidebar('storage', 'afp'); - this.cleanup(); - this.currentLayout = new AFPView(); - $('#maincontent').empty(); - $('#maincontent').append(this.currentLayout.render().el); - }, - - addAFPShare: function() { - this.renderSidebar('storage', 'afp'); - this.cleanup(); - this.currentLayout = new AddAFPShareView(); - $('#maincontent').empty(); - $('#maincontent').append(this.currentLayout.render().el); - }, - - editAFPShare: function(afpShareId) { - this.renderSidebar('storage', 'afp'); - this.cleanup(); - this.currentLayout = new AddAFPShareView({ - afpShareId: afpShareId - }); - $('#maincontent').empty(); - $('#maincontent').append(this.currentLayout.render().el); - }, - showVersion: function() { this.renderSidebar('system', 'version'); this.cleanup(); diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/add_afp_share.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/add_afp_share.jst deleted file mode 100644 index eb8349073..000000000 --- a/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/add_afp_share.jst +++ /dev/null @@ -1,46 +0,0 @@ -
-
-
-
- {{#if afpShareIdNotNull}} - Edit afp export - {{else}} - Add afp export - {{/if}} -
-
-
-
- - -
- -
- -
-
- - - -
- -
- {{display_timeMachine_choices}} -
-
- - -
-
- Cancel - -
-
- -
-
-
-
-
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/afp.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/afp.jst deleted file mode 100644 index 45fbb9e73..000000000 --- a/src/rockstor/storageadmin/static/storageadmin/js/templates/afp/afp.jst +++ /dev/null @@ -1,59 +0,0 @@ - -
-
-
- - - - - -
AFP Service    - -
-
- -
- - {{#if collectionNotEmpty}} - - - - - - - - - - {{#each afpShare}} - - - - - - {{/each}} - - - {{else}} - - - - - - - - {{/if}} - - {{#if sharesNotEmpty}} - Add AFP Export - {{else}} - Add AFP Export - {{/if}} -
-
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst index 27a426a9a..824c7a998 100644 --- a/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst +++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst @@ -18,7 +18,6 @@
  • NFS
  • Samba
  • SFTP
  • -
  • AFP
  • diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/common/sidenav_storage.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/common/sidenav_storage.jst index eabc41eb8..a4c91da2c 100644 --- a/src/rockstor/storageadmin/static/storageadmin/js/templates/common/sidenav_storage.jst +++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/common/sidenav_storage.jst @@ -20,7 +20,6 @@
  • NFS
  • Samba
  • SFTP
  • -
  • AFP
  • diff --git a/src/rockstor/storageadmin/static/storageadmin/js/views/add_afp_share.js b/src/rockstor/storageadmin/static/storageadmin/js/views/add_afp_share.js deleted file mode 100644 index 104a26682..000000000 --- a/src/rockstor/storageadmin/static/storageadmin/js/views/add_afp_share.js +++ /dev/null @@ -1,188 +0,0 @@ -/* - * - * @licstart The following is the entire license notice for the - * JavaScript code in this page. - * - * Copyright (c) 2012-2013 RockStor, Inc. - * This file is part of RockStor. - * - * RockStor is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation; either version 2 of the License, - * or (at your option) any later version. - * - * RockStor is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * @licend The above is the entire license notice - * for the JavaScript code in this page. - * - */ - -AddAFPShareView = RockstorLayoutView.extend({ - events: { - 'click #cancel': 'cancel' - }, - - initialize: function() { - this.constructor.__super__.initialize.apply(this, arguments); - this.template = window.JST.afp_add_afp_share; - this.shares = new ShareCollection(); - // dont paginate shares for now - this.shares.pageSize = RockStorGlobals.maxPageSize; - this.dependencies.push(this.shares); - this.afpShareId = this.options.afpShareId || null; - this.afpShares = new AFPCollection({ - afpShareId: this.afpShareId - }); - this.dependencies.push(this.afpShares); - this.yes_no_choices = [{ - name: 'yes', - value: 'yes' - }, - { - name: 'no', - value: 'no' - }, - ]; - this.time_machine_choices = this.yes_no_choices; - this.initHandlebarHelpers(); - }, - - render: function() { - this.fetch(this.renderAFPForm, this); - return this; - }, - - renderAFPForm: function() { - var _this = this; - var afpShareIdNotNull = false; //afpShareId is Null by default. - this.freeShares = this.shares.reject(function(share) { - s = this.afpShares.find(function(afpShare) { - return (afpShare.get('share') == share.get('name')); - }); - return !_.isUndefined(s); - }, this); - - if (this.afpShareId != null) { - this.aShares = this.afpShares.get(this.afpShareId); - afpShareIdNotNull = true; - } else { - this.aShares = null; - } - - $(this.el).html(this.template({ - freeShares: this.freeShares, - afpShare: this.aShares, - afpShareId: this.afpShareId, - afpShareIdNotNull: afpShareIdNotNull, - time_machine_choices: this.time_machine_choices, - })); - - $('#add-afp-share-form :input').tooltip({ - html: true, - placement: 'right' - }); - - this.$('#shares').select2(); - - - $.validator.setDefaults({ - ignore: ':hidden:not(select)' - }); - - $('#add-afp-share-form').validate({ - onfocusout: false, - onkeyup: false, - rules: { - - shares: 'required', - - }, - - submitHandler: function() { - var button = $('#create-afp-export'); - if (buttonDisabled(button)) return false; - disableButton(button); - var submitmethod = 'POST'; - var posturl = '/api/netatalk'; - if (_this.afpShareId != null) { - submitmethod = 'PUT'; - posturl += '/' + _this.afpShareId; - } - $.ajax({ - url: posturl, - type: submitmethod, - dataType: 'json', - contentType: 'application/json', - data: JSON.stringify(_this.$('#add-afp-share-form').getJSON()), - success: function() { - enableButton(button); - _this.$('#add-afp-share-form :input').tooltip('hide'); - app_router.navigate('afp', { - trigger: true - }); - }, - error: function(xhr, status, error) { - enableButton(button); - } - }); - return false; - } - }); - }, - - cancel: function(event) { - event.preventDefault(); - this.$('#add-afp-share-form :input').tooltip('hide'); - app_router.navigate('afp', { - trigger: true - }); - }, - - initHandlebarHelpers: function() { - Handlebars.registerHelper('display_shares_dropdown', function() { - var html = ''; - if (this.afpShareIdNotNull) { - var afpShare = this.afpShare.get('share'); - html += ''; - } else { - _.each(this.freeShares, function(share, index) { - var shareName = share.get('name'); - html += ''; - }); - } - return new Handlebars.SafeString(html); - }); - - Handlebars.registerHelper('display_timeMachine_choices', function() { - var html = ''; - _.each(this.time_machine_choices, function(c) { - var choiceName = c.name, - choiceValue = c.value; - html += ''; - }); - return new Handlebars.SafeString(html); - }); - } - -}); \ No newline at end of file diff --git a/src/rockstor/storageadmin/static/storageadmin/js/views/afp.js b/src/rockstor/storageadmin/static/storageadmin/js/views/afp.js deleted file mode 100644 index 37fce2ad1..000000000 --- a/src/rockstor/storageadmin/static/storageadmin/js/views/afp.js +++ /dev/null @@ -1,198 +0,0 @@ -/* - * - * @licstart The following is the entire license notice for the - * JavaScript code in this page. - * - * Copyright (c) 2012-2013 RockStor, Inc. - * This file is part of RockStor. - * - * RockStor is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation; either version 2 of the License, - * or (at your option) any later version. - * - * RockStor is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * @licend The above is the entire license notice - * for the JavaScript code in this page. - * - */ - -AFPView = RockstorLayoutView.extend({ - events: { - 'switchChange.bootstrapSwitch': 'switchStatus', - 'click .delete-afp-share': 'deleteAFP' - }, - - initialize: function() { - this.constructor.__super__.initialize.apply(this, arguments); - this.template = window.JST.afp_afp; - this.module_name = 'afp'; - this.collection = new AFPCollection(); - this.dependencies.push(this.collection); - this.serviceName = 'netatalk'; - this.service = new Service({ - name: this.serviceName - }); - this.dependencies.push(this.service); - this.shares = new ShareCollection(); - this.dependencies.push(this.shares); - this.updateFreq = 5000; - }, - - render: function() { - var _this = this; - this.fetch(this.renderAFP, this); - return this; - }, - - renderAFP: function() { - this.freeShares = this.shares.reject(function(share) { - s = this.collection.find(function(afpShare) { - return (afpShare.get('share') == share.get('name')); - }); - return !_.isUndefined(s); - }, this); - - //check if there are shares in the system - var sharesExistBool = false; - if (this.shares.length > 0) { - sharesExistBool = true; - } - //check if there are free shares not associated with afp. - var freeSharesBool = false; - if (this.freeShares) { - freeSharesBool = true; - } - //set a variable to true if both conditions are satisfied - var verifySharesBool = false; - if (freeSharesBool && sharesExistBool) { - verifySharesBool = true; - } - - $(this.el).html(this.template({ - afpShare: this.collection.toJSON(), - collection: this.collection, - collectionNotEmpty: !this.collection.isEmpty(), - freeShares: this.freeShares, - sharesNotEmpty: verifySharesBool, - service: this.service - })); - - this.renderDataTables(); - - //initalize Bootstrap Switch - this.$('[type=\'checkbox\']').bootstrapSwitch(); - this.$('input[name="afp-service-checkbox"]').bootstrapSwitch('state', this.service.get('status'), true); - this.$('[type=\'checkbox\']').bootstrapSwitch('onColor', 'success'); //left side text color - this.$('[type=\'checkbox\']').bootstrapSwitch('offColor', 'danger'); //right side text color - - // Display NFS Export Service Warning - if (!this.service.get('status')) { - this.$('#afp-warning').show(); - } else { - this.$('#afp-warning').hide(); - } - }, - - switchStatus: function(event, state) { - if (state) { - this.startService(); - } else { - this.stopService(); - } - }, - - deleteAFP: function(event) { - var _this = this; - if (event) event.preventDefault(); - var button = $(event.currentTarget); - if (buttonDisabled(button)) return false; - if (confirm('Are you sure you want to stop exporting this share via AFP?')) { - disableButton(button); - var id = $(event.currentTarget).data('id'); - - $.ajax({ - url: '/api/netatalk/' + id, - type: 'DELETE', - dataType: 'json', - contentType: 'application/json', - success: function() { - _this.render(); - }, - error: function(xhr, status, error) { - enableButton(button); - } - }); - - } - }, - - startService: function() { - var _this = this; - this.setStatusLoading(this.serviceName, true); - $.ajax({ - url: '/api/sm/services/netatalk/start', - type: 'POST', - dataType: 'json', - success: function(data, status, xhr) { - _this.setStatusLoading(_this.serviceName, false); - _this.$('#afp-warning').hide(); - }, - error: function(xhr, status, error) { - _this.setStatusError(serviceName, xhr); - _this.$('#afp-warning').show(); - } - }); - }, - - stopService: function() { - var _this = this; - this.setStatusLoading(this.serviceName, true); - $.ajax({ - url: '/api/sm/services/netatalk/stop', - type: 'POST', - dataType: 'json', - success: function(data, status, xhr) { - _this.setStatusLoading(_this.serviceName, false); - _this.$('#afp-warning').show(); - }, - error: function(xhr, status, error) { - _this.setStatusError(_this.serviceName, xhr); - _this.$('#afp-warning').hide(); - } - }); - }, - - setStatusLoading: function(serviceName, show) { - var statusEl = this.$('div.command-status[data-service-name="' + serviceName + '"]'); - if (show) { - statusEl.html(''); - } else { - statusEl.empty(); - } - }, - - setStatusError: function(serviceName, xhr) { - var statusEl = this.$('div.command-status[data-service-name="' + serviceName + '"]'); - var msg = parseXhrError(xhr); - // remove any existing error popups - $('body').find('#' + serviceName + 'err-popup').remove(); - // add icon and popup - statusEl.empty(); - var icon = $('').addClass('icon-exclamation-sign').attr('rel', '#' + serviceName + '-err-popup'); - statusEl.append(icon); - var errPopup = this.$('#' + serviceName + '-err-popup'); - var errPopupContent = this.$('#' + serviceName + '-err-popup > div'); - errPopupContent.html(msg); - statusEl.click(function() { - errPopup.overlay().load(); - }); - }, -}); \ No newline at end of file diff --git a/src/rockstor/storageadmin/tests/test_afp.py b/src/rockstor/storageadmin/tests/test_afp.py deleted file mode 100644 index e3a655786..000000000 --- a/src/rockstor/storageadmin/tests/test_afp.py +++ /dev/null @@ -1,202 +0,0 @@ -""" -Copyright (c) 2012-2013 RockStor, Inc. -This file is part of RockStor. - -RockStor is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -RockStor is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" -import mock -from rest_framework import status -from rest_framework.test import APITestCase -from mock import patch - -from storageadmin.models import NetatalkShare, Pool, Share -from storageadmin.tests.test_api import APITestMixin - - -class AFPTests(APITestMixin, APITestCase): - # fixture with share1 exported by AFP with Time Machine option - # and share2 with no existing AFP export - fixtures = ['test-afp.json'] - BASE_URL = '/api/netatalk' - - @classmethod - def setUpClass(cls): - super(AFPTests, cls).setUpClass() - - # post mocks - cls.patch_mount_share = patch( - 'storageadmin.views.netatalk.mount_share') - cls.mock_mount_share = cls.patch_mount_share.start() - - cls.patch_refresh_afp_config = patch( - 'storageadmin.views.netatalk.refresh_afp_config') - cls.mock_refresh_afp_config = cls.patch_refresh_afp_config.start() - - cls.patch_systemctl = patch('storageadmin.views.netatalk.systemctl') - cls.mock_systemctl = cls.patch_systemctl.start() - - # all values as per fixture - cls.temp_pool = Pool(id=9, name='rock-pool', size=5242880) - cls.temp_share = Share(id=14, name='share1', pool=cls.temp_pool) - cls.temp_afpshare = NetatalkShare(id=1, share=cls.temp_share) - - @classmethod - def tearDownClass(cls): - super(AFPTests, cls).tearDownClass() - - def test_get(self): - """ - Test GET request - 1. Get base URL - 2. Get request with id - """ - # get base URL - self.get_base(self.BASE_URL) - - # get afp-export with id - response = self.client.get('{}/1'.format(self.BASE_URL)) - self.assertEqual(response.status_code, status.HTTP_200_OK, - msg=response) - - def test_post_requests_1(self): - """ - invalid afp export operations - 1. Create afp export without providing share names - """ - - # create afp export with no share names - data = {'time_machine': 'yes', } - response = self.client.post(self.BASE_URL, data=data) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - - e_msg = 'Must provide share names.' - self.assertEqual(response.data[0], e_msg) - - # @mock.patch('storageadmin.models.Share') - def test_post_requests_2(self): - """ - Invalid afp export operations - Create afp export for the share that has already been exported - """ - - # TODO: These tests failed with: - # 'Share with name (share1) does not exist.' - # and the following didn't work for this. - # see test_pools.py test_delete_pool_with_share() for overkill - # workaround - - # mock_share.objects.get.return_value = self.temp_share - # mock_share.objects.filter(pool=self.temp_pool).exists.return_value - # = True - - # create afp export with invalid time machine value - data = {'shares': ('share1',), 'time_machine': 'invalid', } - response = self.client.post(self.BASE_URL, data=data) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - - e_msg = 'Time_machine must be yes or no. Not (invalid).' - self.assertEqual(response.data[0], e_msg) - - # create afp export with already existing share - data = {'shares': ('share1',), 'time_machine': 'yes', } - response = self.client.post(self.BASE_URL, data=data) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - - e_msg = 'Share (share1) is already exported via AFP.' - self.assertEqual(response.data[0], e_msg) - - # happy path - data = {'shares': ('share2',), 'time_machine': 'yes', } - response = self.client.post(self.BASE_URL, data=data) - self.assertEqual(response.status_code, - status.HTTP_200_OK, msg=response.data) - - def test_put_requests_1(self): - """ - 1. Edit afp export that does not exists - """ - # edit afp export that does not exist - afp_id = 99999 - data = {'shares': ('share1',), 'time_machine': 'yes', } - response = self.client.put('{}/{}'.format(self.BASE_URL, afp_id), - data=data) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - e_msg = 'AFP export for the id ({}) does not exist.'.format(afp_id) - self.assertEqual(response.data[0], e_msg) - - @mock.patch('storageadmin.views.netatalk.NetatalkShare') - def test_put_requests_2(self, mock_afpshare): - """ - 2. Edit afp export - """ - - mock_afpshare.objects.get.return_value = self.temp_afpshare - - # edit afp export with invalid time machine value - afp_id = 1 - data = {'shares': ('share1',), 'time_machine': 'invalid', } - response = self.client.put('{}/{}'.format(self.BASE_URL, afp_id), - data=data) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - - e_msg = 'Time_machine must be yes or no. Not (invalid).' - self.assertEqual(response.data[0], e_msg) - - # happy path - afp_id = 2 - data = {'shares': ('share2',), 'time_machine': 'yes', } - response = self.client.put('{}/{}'.format(self.BASE_URL, afp_id), - data=data) - self.assertEqual(response.status_code, - status.HTTP_200_OK, msg=response.data) - - def test_delete_requests_1(self): - """ - 1. Delete afp export that does not exist - """ - - # Delete afp that does nor exists - afp_id = 99999 - response = self.client.delete('{}/{}'.format(self.BASE_URL, afp_id)) - self.assertEqual(response.status_code, - status.HTTP_500_INTERNAL_SERVER_ERROR, - msg=response.data) - e_msg = 'AFP export for the id ({}) does not exist.'.format(afp_id) - self.assertEqual(response.data[0], e_msg) - - - @mock.patch('storageadmin.views.netatalk.NetatalkShare') - def test_delete_requests_2(self, mock_afpshare): - """ - 1. Delete afp export - """ - - mock_afpshare.objects.get.return_value = self.temp_afpshare - - # happy path - afp_id = 1 - response = self.client.delete('{}/{}'.format(self.BASE_URL, afp_id)) - self.assertEqual(response.status_code, - status.HTTP_200_OK, msg=response.data) - diff --git a/src/rockstor/storageadmin/views/__init__.py b/src/rockstor/storageadmin/views/__init__.py index 2f9a35014..7bfc93ca4 100644 --- a/src/rockstor/storageadmin/views/__init__.py +++ b/src/rockstor/storageadmin/views/__init__.py @@ -39,7 +39,6 @@ from samba import (SambaListView, SambaDetailView) # noqa F401 from sftp import (SFTPListView, SFTPDetailView) # noqa F401 from oauth_app import OauthAppView # noqa F401 -from netatalk import (NetatalkListView, NetatalkDetailView) # noqa F401 from group import (GroupListView, GroupDetailView) # noqa F401 from pool_balance import PoolBalanceView # noqa F401 from tls_certificate import TLSCertificateView # noqa F401 diff --git a/src/rockstor/storageadmin/views/config_backup.py b/src/rockstor/storageadmin/views/config_backup.py index f96f45971..83dbf5af6 100644 --- a/src/rockstor/storageadmin/views/config_backup.py +++ b/src/rockstor/storageadmin/views/config_backup.py @@ -94,21 +94,6 @@ def restore_samba_exports(ml): generic_post('{}/samba'.format(BASE_URL), exports) -def restore_afp_exports(ml): - logger.info("Started restoring AFP exports.") - exports = [] - for m in ml: - if m["model"] == "storageadmin.netatalkshare": - exports.append(m["fields"]) - if len(exports) > 0: - logger.info("Starting Netatalk service") - generic_post("%s/sm/services/netatalk/start" % BASE_URL, {}) - for e in exports: - e["shares"] = [e["path"].split("/")[-1]] - generic_post("%s/netatalk" % BASE_URL, e) - logger.info("Finished restoring AFP exports.") - - def restore_nfs_exports(ml): logger.info("Started restoring NFS exports.") exports = [] @@ -445,7 +430,6 @@ def restore_config(cbid): restore_users_groups(sa_ml) restore_samba_exports(sa_ml) restore_nfs_exports(sa_ml) - restore_afp_exports(sa_ml) restore_services(sm_ml) # restore_dashboard(ml) # restore_appliances(ml) @@ -547,7 +531,7 @@ def post(self, request, backup_id): # 4. Service configs # 5. Appliances? # 6. Scheduled Tasks - # 7. SFTP, AFP + # 7. SFTP logger.debug("restore starting...") restore_config.async(cbo.id) logger.debug("restore submitted...") diff --git a/src/rockstor/storageadmin/views/netatalk.py b/src/rockstor/storageadmin/views/netatalk.py deleted file mode 100644 index d3f7e3bc6..000000000 --- a/src/rockstor/storageadmin/views/netatalk.py +++ /dev/null @@ -1,142 +0,0 @@ -""" -Copyright (c) 2012-2014 RockStor, Inc. -This file is part of RockStor. - -RockStor is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -RockStor is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from rest_framework.response import Response -from django.db import transaction -from django.conf import settings -from storageadmin.models import NetatalkShare -from storageadmin.util import handle_exception -from storageadmin.serializers import NetatalkShareSerializer -from storageadmin.exceptions import RockStorAPIException -from fs.btrfs import mount_share -from system.services import (systemctl, refresh_afp_config) -import rest_framework_custom as rfc -from share_helpers import validate_share - - -import logging -logger = logging.getLogger(__name__) - - -class NetatalkDetailView(rfc.GenericView): - def get(self, *args, **kwargs): - try: - data = NetatalkShare.objects.get(id=self.kwargs['id']) - serialized_data = NetatalkShareSerializer(data) - return Response(serialized_data.data) - except: - return Response() - - @transaction.atomic - def put(self, request, afp_id): - afpo = self._validate_afp_id(request, afp_id) - afpo.time_machine = self._validate_input(request) - afpo.save() - self._refresh_and_reload(request) - return Response(NetatalkShareSerializer(afpo).data) - - @transaction.atomic - def delete(self, request, afp_id): - afpo = self._validate_afp_id(request, afp_id) - try: - afpo.delete() - except: - e_msg = 'Failed to delete AFP config for id ({}).'.format(afp_id) - handle_exception(Exception(e_msg), request) - - self._refresh_and_reload(request) - return Response() - - @staticmethod - def _validate_afp_id(request, afp_id): - try: - return NetatalkShare.objects.get(id=afp_id) - except: - e_msg = 'AFP export for the id ({}) does not exist.'.format(afp_id) - handle_exception(Exception(e_msg), request) - - @staticmethod - def _validate_input(request): - 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) - return time_machine - - @staticmethod - 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: ({}).').format(e.__str__()) - handle_exception(Exception(e_msg), request) - - -class NetatalkListView(rfc.GenericView): - serializer_class = NetatalkShareSerializer - def_description = 'on Rockstor' - - def get_queryset(self, *args, **kwargs): - return NetatalkShare.objects.all() - - @transaction.atomic - 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) diff --git a/src/rockstor/system/config_backup.py b/src/rockstor/system/config_backup.py index ee07a6e20..52882317f 100644 --- a/src/rockstor/system/config_backup.py +++ b/src/rockstor/system/config_backup.py @@ -35,7 +35,6 @@ def backup_config(): "group", "sambashare", "sambacustomconfig", - "netatalkshare", "nfsexport", "nfsexportgroup", "advancednfsexport", diff --git a/src/rockstor/system/services.py b/src/rockstor/system/services.py index 3c6aba98b..0d6e5b238 100644 --- a/src/rockstor/system/services.py +++ b/src/rockstor/system/services.py @@ -34,7 +34,6 @@ SUPERVISORD_CONF = "%s/etc/supervisord.conf" % settings.ROOT_DIR NET = "/usr/bin/net" WBINFO = "/usr/bin/wbinfo" -AFP_CONFIG = "/etc/netatalk/afp.conf" def init_service_op(service_name, command, throw=True): @@ -55,7 +54,6 @@ def init_service_op(service_name, command, throw=True): "rpcbind", "ntpd", "nslcd", - "netatalk", "snmpd", "docker", "smartd", @@ -225,37 +223,6 @@ def toggle_auth_service(service, command, config=None): return run_command(ac_cmd) -def rockstor_afp_config(fo, afpl): - fo.write(";####BEGIN: Rockstor AFP CONFIG####\n") - for c in afpl: - vol_size = int(c.vol_size / 1024) - fo.write("[{}]\n".format(c.description)) - fo.write(" path = {}\n".format(c.path)) - fo.write(" time machine = {}\n".format(c.time_machine)) - fo.write(" vol size limit = {}\n\n".format(vol_size)) - fo.write(";####END: Rockstor AFP CONFIG####\n") - - -def refresh_afp_config(afpl): - fo, npath = mkstemp() - with open(AFP_CONFIG) as afo, open(npath, "w") as tfo: - rockstor_section = False - tfo.write("; Netatalk 3.x configuration file\n\n") - tfo.write("[Global]\n") - tfo.write("mimic model = RackMac\n") - tfo.write("uam list = uams_dhx.so,uams_dhx2.so\n") - tfo.write("save password = no\n\n") - for line in afo.readlines(): - if re.match(";####BEGIN: Rockstor AFP CONFIG####", line) is not None: - rockstor_section = True - rockstor_afp_config(tfo, afpl) - break - if rockstor_section is False: - rockstor_afp_config(tfo, afpl) - shutil.move(npath, AFP_CONFIG) - os.chmod(AFP_CONFIG, 644) - - def update_nginx(ip, port): port = int(port) conf = "{}/etc/nginx/nginx.conf".format(settings.ROOT_DIR) diff --git a/src/rockstor/urls.py b/src/rockstor/urls.py index 5dc88ddeb..1039bda44 100644 --- a/src/rockstor/urls.py +++ b/src/rockstor/urls.py @@ -22,7 +22,6 @@ NFSExportGroupDetailView, SambaListView, SambaDetailView, SFTPListView, SFTPDetailView, AdvancedNFSExportView, OauthAppView, - NetatalkListView, NetatalkDetailView, TLSCertificateView, SnapshotView, ConfigBackupListView, ConfigBackupDetailView, ConfigBackupUpload, EmailClientView) @@ -88,9 +87,6 @@ SambaDetailView.as_view()), url(r'^api/sftp$', SFTPListView.as_view()), url(r'^api/sftp/(?P\d+)$', SFTPDetailView.as_view()), - url(r'^api/netatalk$', NetatalkListView.as_view()), - url(r'^api/netatalk/(?P\d+)$', - NetatalkDetailView.as_view()), # Dashboard config url(r'^api/dashboardconfig$', DashboardConfigView.as_view()),