A TrueCharts automatic and bulk update utility

Related tags

Networkingtrueupdate
Overview

trueupdate

A TrueCharts automatic and bulk update utility

How to install

run pip install trueupdate

Please be aware you will need to reinstall after every SCALE update

How to Update

run pip install --upgrade trueupdate

How to use

Just run trueupdate in the shell of your TrueNAS SCALE machine, to have it process Patch and Minor version updates for all Apps

Additional options are available:

  • trueupdate CATALOG where CATALOG is the name of the catalog you want to process in caps
  • trueupdate Semver where semver is the highest semver version you want to process. options: patch, minor and major
Comments
  • Errors on TrueNAS-SCALE-22.02.2

    Errors on TrueNAS-SCALE-22.02.2

    App Name

    truetool

    SCALE Version

    22.02.2

    App Version

    none

    Application Events

    none
    

    Application Logs

    [email protected][.../important/appbackup/scripts/truetool]# ./truetool.sh -U
      _______               _____ _                _       
     |__   __|             / ____| |              | |      
        | |_ __ _   _  ___| |    | |__   __ _ _ __| |_ ___ 
        | | '__| | | |/ _ \ |    | '_ \ / _` | '__| __/ __|
        | | |  | |_| |  __/ |____| | | | (_| | |  | |_\__ \
      __|_|_|   \__,_|\___|\_____|_| |_|\__,_|_|   \__|___/
     |__   __|         |__   __|        | |                
        | |_ __ _   _  ___| | ___   ___ | |                
        | | '__| | | |/ _ \ |/ _ \ / _ \| |                
        | | |  | |_| |  __/ | (_) | (_) | |                
        |_|_|   \__,_|\___|_|\___/ \___/|_|                
                                                           
                                                           
    Checking for updates...
    script up-to-date
    
    App Updater
    Default Timeout: 500
    
    Creating list of Apps to update...
    No apps added to ignore list, continuing...
    
    
    32 update(s) available:
    alist
    awesome-ttrss
    chinesesubfinder
    deepstack
    double-take
    emby
    esphome
    flaresolverr
    flexget
    frp
    frphk
    home-assistant
    kms
    loki
    mariadb-typecho
    mattermost
    meshcentral
    minio
    mosquitto
    nginx-typecho
    overseerr
    photoprism
    plex
    prowlarr
    qb
    qinglong
    radarr
    sonarr
    syncthing
    truenas-webui
    ups
    vaultwarden
    
    Updating Apps...
    
    Waiting for update results...
    awesome-ttrss: update FAILED
    esphome: update FAILED
    kms: update FAILED
    frp: update FAILED
    emby: update FAILED
    deepstack: update FAILED
    qinglong: update FAILED
    nginx-typecho: update FAILED
    meshcentral: update FAILED
    vaultwarden: update FAILED
    mattermost: update FAILED
    frphk: update FAILED
    Updated mariadb-typecho
    0.20.1197_5.0.11
    0.20.1208_5.0.12
    qb: update FAILED
    middleware is not responding.
    chinesesubfinder: update FAILED
    mosquitto: update FAILED
    Updated ups
    0.20.1197_5.0.11
    0.20.1208_5.0.12
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Updated radarr
    4.1.0.6175_11.0.5
    4.1.0.6175_11.0.6
    Updated minio
    latest_3.0.8
    latest_3.0.9
    Updated loki
    2.5.0_5.0.5
    2.5.0_5.0.6
    Updated truenas-webui
    0.66.6_6.0.4
    0.66.6_6.0.5
    Updated prowlarr
    0.4.0.1802_6.0.5
    0.4.0.1802_6.0.6
    Updated photoprism
    220617_10.0.6
    220617_10.0.7
    Updated alist
    2.6.1_2.0.5
    2.6.1_2.0.6
    Updated syncthing
    1.20.2_11.0.4
    1.20.2_11.0.5
    Updated flaresolverr
    2.2.4_6.0.5
    2.2.4_6.0.6
    Updated overseerr
    1.29.1_6.0.5
    1.29.1_6.0.6
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Updated flexget
    0.20.1197_5.0.11
    0.20.1208_5.0.12
    Updated plex
    1.27.0.589_10.0.6
    1.27.0.589_10.0.7
    Updated sonarr
    3.0.8.1507_11.0.5
    3.0.8.1507_11.0.6
    Updated double-take
    1.12.1_2.0.6
    1.12.1_2.0.7
    Updated home-assistant
    2022.6.6_15.0.7
    2022.6.6_15.0.8
    Active
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
        return self.wait(c, callback=callback, job=job, timeout=timeout)
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        raise CallTimeout("Call timeout")
        return self.wait(c, callback=callback, job=job, timeout=timeout)
    middlewared.client.client.CallTimeout: Call timeout
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
        sys.exit(main())
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
      File "/usr/bin/cli", line 12, in <module>
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        self.context.process_input(self.command)
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        raise CallTimeout("Call timeout")
        return self.wait(c, callback=callback, job=job, timeout=timeout)
    middlewared.client.client.CallTimeout: Call timeout
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
        cli.run()
      File "/usr/bin/cli", line 12, in <module>
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        self.context.process_input(self.command)
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        raise CallTimeout("Call timeout")
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
        return format_error(self.context, e)
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
      File "/usr/bin/cli", line 12, in <module>
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
        cli.run()
    TypeError: 'NoneType' object is not subscriptable
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Active
    Stopped
    Active
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
    Traceback (most recent call last):
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/bin/cli", line 12, in <module>
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        raise CallTimeout("Call timeout")
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        cli.run()
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        namespace = self.current_namespace.process_input(text)
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        i.process_input(rest)
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        self.call(self.method["name"], parsed.filters, parsed.options,
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        if (error := self._handle_error(e)) is not None:
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        if (error := self._handle_error(e)) is not None:
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        return format_error(self.context, e)
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        rv = c.call(name, *args, job=job, callback=self._job_callback)
        raise CallTimeout("Call timeout")
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
        rv = c.call(name, *args, job=job, callback=self._job_callback)
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        rv = c.call(name, *args, job=job, callback=self._job_callback)
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        self.context.process_input(self.command)
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        raise CallTimeout("Call timeout")
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
        namespace = self.current_namespace.process_input(text)
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
      File "/usr/bin/cli", line 12, in <module>
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        sys.exit(main())
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        cli.run()
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        return i.process_input(rest)
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        i.process_input(rest)
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 36, in call
        rv = c.call(name, *args, job=job, callback=self._job_callback)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 485, in call
        return self.wait(c, callback=callback, job=job, timeout=timeout)
      File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 493, in wait
        raise CallTimeout("Call timeout")
    middlewared.client.client.CallTimeout: Call timeout
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/cli", line 12, in <module>
        sys.exit(main())
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 267, in main
        cli.run()
      File "/usr/lib/python3/dist-packages/midcli/__main__.py", line 176, in run
        self.context.process_input(self.command)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 312, in process_input
        namespace = self.current_namespace.process_input(text)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 79, in process_input
        return i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/context.py", line 82, in process_input
        i.process_input(rest)
      File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input
        self.call(self.method["name"], parsed.filters, parsed.options,
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 47, in call
        if (error := self._handle_error(e)) is not None:
      File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/__init__.py", line 76, in _handle_error
        return format_error(self.context, e)
      File "/usr/lib/python3/dist-packages/midcli/middleware.py", line 8, in format_error
        if e.trace["class"] == "CallError":
    TypeError: 'NoneType' object is not subscriptable
    
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Stopped
    Active
    Active
    

    Application Configuration

    none

    Describe the bug

    just run ./truetool.sh -U

    To Reproduce

    none

    Expected Behavior

    none

    Screenshots

    none

    Additional Context

    none

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by Sagit-chu 10
  • Python errors on TrueNAS-SCALE-22.02-RC.2

    Python errors on TrueNAS-SCALE-22.02-RC.2

    Command: pip install --no-cache-dir --upgrade truetool && truetool -b -s -u -a -p

    Output:

    Collecting truetool Downloading truetool-3.0.3-py3-none-any.whl (6.1 kB) Installing collected packages: truetool Successfully installed truetool-3.0.3 Traceback (most recent call last): File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/init.py", line 37, in call rv = c.call(name, *args, job=job, callback=self._job_callback) File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/init.py", line 37, in call rv = c.call(name, *args, job=job, callback=self._job_callback) File "/usr/lib/python3/dist-packages/middlewared/client/client.py", line 458, in call raise CallTimeout("Call timeout") middlewared.client.client.CallTimeout: Call timeout

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/bin/cli", line 12, in sys.exit(main()) File "/usr/lib/python3/dist-packages/midcli/main.py", line 262, in main cli.run() File "/usr/lib/python3/dist-packages/midcli/main.py", line 176, in run self.context.process_input(self.command) File "/usr/lib/python3/dist-packages/midcli/context.py", line 309, in process_input namespace = self.current_namespace.process_input(text) File "/usr/lib/python3/dist-packages/midcli/context.py", line 78, in process_input return i.process_input(rest) File "/usr/lib/python3/dist-packages/midcli/context.py", line 78, in process_input return i.process_input(rest) File "/usr/lib/python3/dist-packages/midcli/context.py", line 81, in process_input i.process_input(rest) File "/usr/lib/python3/dist-packages/midcli/command/query/command.py", line 40, in process_input self.call(self.method["name"], parsed.filters, parsed.options, File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/init.py", line 48, in call if (error := self._handle_error(e)) is not None: File "/usr/lib/python3/dist-packages/midcli/command/call_mixin/init.py", line 81, in _handle_error if e.trace["class"] == "CallError": TypeError: 'NoneType' object is not subscriptable Starting TrueCharts TrueTool...

    Cleaning old backups to a max. of 14...

    Running App Backup...

    [10%] Basic validation complete...

    [36%] Backing up plex...

    [63%] Backing up heimdall...

    [90%] Backing up nessus...

    [95%] Taking snapshot of ix-applications...

    [100%] Backup 'TrueTool_2022_02_10_20_20_43' complete...

    TrueTool_2022_02_10_20_20_43

    Syncing Catalogs...

    [0%] Syncing OFFICIAL catalog...

    [50%] Syncing TRUECHARTS catalog...

    [100%] Syncing TRUECHARTS catalog...

    Executing Updates...

    Pruning old docker images...

    Images pruned.

    TrueTool Finished

    opened by xTITUSMAXIMUSX 8
  • Add --no-auto-update

    Add --no-auto-update

    Description Add a flag to disable the auto-update. Useful to avoid trying to sync as a boot command.

    • Fix up missing --no-color help text.

    ⚒️ Fixes #

    ⚙️ Type of change

    • [x] ⚙️ Feature/App addition
    • [ ] 🪛 Bugfix
    • [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] 🔃 Refactor of current code

    🧪 How Has This Been Tested?

    📃 Notes:

    ✔️ Checklist:

    • [ ] ⚖️ My code follows the style guidelines of this project
    • [ ] 👀 I have performed a self-review of my own code
    • [ ] #️⃣ I have commented my code, particularly in hard-to-understand areas
    • [ ] 📄 I have made corresponding changes to the documentation
    • [ ] ⚠️ My changes generate no new warnings
    • [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works
    • [ ] ⬆️ I increased versions for any altered app according to semantic versioning

    ➕ App addition

    If this PR is an app addition please make sure you have done the following.

    • [ ] 🪞 I have opened a PR on truecharts/containers adding the container to TrueCharts mirror repo.
    • [ ] 🖼️ I have added an icon in the Chart's root directory called icon.png

    Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance.

    opened by SuperQ 7
  • 'update FAILED' even though it does not

    'update FAILED' even though it does not

    App Name

    TrueTool

    SCALE Version

    22.02.3

    App Version

    v4.0.0

    Application Events

    bash truetool.sh -vsUp
      _______               _____ _                _       
     |__   __|             / ____| |              | |      
        | |_ __ _   _  ___| |    | |__   __ _ _ __| |_ ___ 
        | | '__| | | |/ _ \ |    | '_ \ / _` | '__| __/ __|
        | | |  | |_| |  __/ |____| | | | (_| | |  | |_\__ \
      __|_|_|   \__,_|\___|\_____|_| |_|\__,_|_|   \__|___/
     |__   __|         |__   __|        | |                
        | |_ __ _   _  ___| | ___   ___ | |                
        | | '__| | | |/ _ \ |/ _ \ / _ \| |                
        | | |  | |_| |  __/ | (_) | (_) | |                
        |_|_|   \__,_|\___|_|\___/ \___/|_|                
                                                           
                                                           
    Checking for updates...
    TrueTool requires update
    script updated
    restarting script after update...
    Checking for updates...
    script up-to-date
    
    Starting Catalog Sync...
    Catalog sync complete
    App Updater
    Default Timeout: 500
    
    Creating list of Apps to update...
    No apps added to ignore list, continuing...
    
    
    29 update(s) available:
    drawio
    flaresolverr
    fluidd
    freshrss
    gaps
    handbrake
    home-assistant
    jdownloader2
    kavita
    lidarr
    mosquitto
    node-red
    openspeedtest
    overseerr
    plex
    protonmail-bridge
    prowlarr
    qbittorrent
    radarr
    radarr-uhd
    readarr
    scrutiny
    sonarr
    sonarr-uhd
    tautulli
    tinymediamanager
    trilium-notes
    unifi
    zigbee2mqtt
    
    Updating Apps...
    
    Waiting for update results...
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    Updating..
    trilium-notes: update FAILED
    flaresolverr: update FAILED
    jdownloader2: update FAILED
    freshrss: update FAILED
    Updated fluidd
    1.20.0_2.0.31
    1.20.0_2.0.32
    Updated mosquitto
    2.0.15_6.0.32
    2.0.15_6.0.34
    Updated drawio
    20.2.6_2.0.39
    20.2.6_2.0.40
    Updated sonarr
    3.0.9.1549_11.0.30
    3.0.9.1549_11.0.31
    Verifying Active..
    Verifying Active..
    Updated plex
    1.28.1.610_10.2.2
    1.28.2.610_10.2.4
    Updated openspeedtest
    latest_1.0.28
    latest_1.0.29
    Updated zigbee2mqtt
    1.27.0_4.0.29
    1.27.0_4.0.31
    Updated unifi
    7.2.92_11.0.29
    7.2.92_11.0.30
    Updated qbittorrent
    4.4.3.1_11.0.30
    4.4.3.1_11.0.31
    Updated overseerr
    1.29.1_6.0.28
    1.29.1_6.0.29
    Updated prowlarr
    0.4.4.1947_6.0.32
    0.4.4.1947_6.0.33
    Updated scrutiny
    0.5.0_3.0.27
    0.5.0_3.0.28
    Updated node-red
    3.0.2_11.0.31
    3.0.2_11.0.32
    Updated tautulli
    2.10.3_11.0.30
    2.10.3_11.0.31
    Updated gaps
    0.10.4_11.0.29
    0.10.4_11.0.30
    Updated readarr
    0.1.1.1352_11.0.26
    0.1.1.1352_11.0.27
    Updated tinymediamanager
    4.3.3_2.0.30
    4.3.3_2.0.31
    Updated home-assistant
    2022.8.7_15.0.46
    2022.8.7_15.0.47
    Updated lidarr
    1.1.0.2600_11.0.26
    1.1.0.2600_11.0.27
    Updated protonmail-bridge
    1.8.10_6.0.27
    1.8.10_6.0.28
    Updated sonarr-uhd
    3.0.9.1549_11.0.30
    3.0.9.1549_11.0.31
    Updated kavita
    0.5.5_2.0.30
    0.5.5_2.0.31
    Updated radarr-uhd
    4.1.0.6175_11.0.29
    4.1.0.6175_11.0.30
    Updated radarr
    4.1.0.6175_11.0.29
    4.1.0.6175_11.0.30
    Updated handbrake
    1.25.1_13.0.29
    1.25.1_13.0.30
    Verifying Active..
    Verifying Active..
    Active
    Active
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Verifying Active..
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Active
    Docker Prune
    Pruning Docker Images...
    Total reclaimed space: 2.054GB
    Docker Prune Successfull
    

    Application Logs

    I see multiple listings of the following types of errors in the Task Manager
    
    Error: [ENOENT] None: ChartRelease freshrss does not exist
    
    catalog.items
    Error: Failed connection handshake
    
    chart.release.pull_container_images
    Error: [EFAULT] Unable to connect to kubernetes cluster
    

    Application Configuration

    bash truetool.sh -vsUp

    Describe the bug

    When updating a large number of containers (29 in this example) some containers 'FAILED' to update but once checking in TrueNAS the containers are up to date.

    To Reproduce

    1. Run the script and have a lot of updates available.
    2. Receive errors that some updates 'FAILED' even though they do not.

    Expected Behavior

    Not receive erroneous error messages.

    Screenshots

    Screenshot from 2022-08-30 15-46-43

    Additional Context

    I think this is due to it trying to update too many containers at one time overloading either the local server or the remote update server. If TrueTool does not find too many updates I have never gotten these errors, only after the weekly TrueCharts update when almost every container gets an update.

    I don't believe this is due to an under powered server. I have dual Intel Xeon E5-2680 v3 (12c24t) and 128GB of RAM. Containers are hosted on M.2 NVMe. Network connection is 10GbE to a pfSense router with 1GbE internet.

    Edit: Also, just adding that the containers that report failing to update are seemingly random every time. The number that fail also seems to be random. I believe I have seen as many as 8 and as few as 3. But like I said they actually do end up updating in the end.

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by ChaosBlades 5
  • Restrict zfs volume lookup to kubernetes dataset

    Restrict zfs volume lookup to kubernetes dataset

    to avoid matching multiple datasets in the presence of backups of ix-applications.

    Description

    ⚒️ Fixes #33

    ⚙️ Type of change

    • [ ] ⚙️ Feature/App addition
    • [x] 🪛 Bugfix
    • [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] 🔃 Refactor of current code

    🧪 How Has This Been Tested?

    Tested manually on my TrueNAS Scale by issueing

    pool=$(cli -m csv -c 'app kubernetes config' | awk -F ',' 'NR==2 {print $13}' | tr -d " \t\n\r")
    zfs list -r "$pool"
    

    and also by patching my local truetool with these changes and mounting a volume.

    📃 Notes:

    app kubernets config does not support specifying the columns you want your csv output to have as far as I could see. This means the print $13 is a little bit brittle in that it will break if a column is added or removed before it.

    ✔️ Checklist:

    • [ ] ⚖️ My code follows the style guidelines of this project
    • [x] 👀 I have performed a self-review of my own code
    • [ ] #️⃣ I have commented my code, particularly in hard-to-understand areas
    • [ ] 📄 I have made corresponding changes to the documentation
    • [x] ⚠️ My changes generate no new warnings
    • [x] 🧪 I have added tests to this description that prove my fix is effective or that my feature works
    • [ ] ⬆️ I increased versions for any altered app according to semantic versioning

    ➕ App addition

    If this PR is an app addition please make sure you have done the following.

    • [ ] 🪞 I have opened a PR on truecharts/containers adding the container to TrueCharts mirror repo.
    • [ ] 🖼️ I have added an icon in the Chart's root directory called icon.png

    Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance.

    opened by luqasn 5
  • Automated fix to breaking changes in helm charts

    Automated fix to breaking changes in helm charts

    Is your feature request related to a problem?

    Recently [1][2], old helm charts fail to upgrade when they have 'simplePVC' and 'SimpleHP' Persistence and PersistentList entries.

    I was hoping for an automated fix here, but since none existed with some trial and error, I ended up making one.

    Describe the solution you'd like

    Have truetool be able to fix all 'old-style' charts automatically.

    Describe alternatives you've considered

    Performing the task manually, one by one, is not only slow, but prone to human errors.

    Additional context

    Full code of my solution will be posted in the first comment.

    The reason I'm not posting a PR, is because I'm unsure the maintainers of this tool are interested in this, but this seems like a good 'central' place to put this for those who are interested.

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my request is not there.
    • [X] I've checked all open and closed pull requests and my request is not there.
    enhancement 
    opened by Lockszmith-GH 4
  • Truetool fail, sometime, to pull the proper app status when processing a pvc mount request, resulting in waiting the whole timeout period for it to proceed

    Truetool fail, sometime, to pull the proper app status when processing a pvc mount request, resulting in waiting the whole timeout period for it to proceed

    App Name

    truetool

    SCALE Version

    22.02.4

    App Version

    git:latest

    Application Events

    N/A
    

    Application Logs

    + echo -e '1  Mount\n2  Unmount All'                                                                                                                                                                                                                                           [53/1953]1  Mount
    2  Unmount All
    + read -rt 600 -p 'Please type a number: ' selection
    Please type a number: 1
    + [[ -z 1 ]]
    + [[ 1 == \1 ]]
    ++ k3s kubectl get pvc -A
    ++ sort -u
    ++ awk '{print NR-1, "\t" $1 "\t" $2 "\t" $4}'
    ++ column -t
    ++ sed 's/^0/ /'
    + list='   NAMESPACE        NAME                 VOLUME
    1  ix-navidrome     navidrome-config     pvc-6da081a2-bf6d-456a-8e6e-b0000b3c3fd0
    2  ix-filebot       filebot-config       pvc-2da081a2-bf2d-456a-8e6e-b0000b3c3fd9
    3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e
    4  ix-pihole-bk     pihole-bk-config     pvc-a1f722f8-db4c-4aeb-99a6-92f25bd2345a
    5  ix-plex          plex-config          pvc-be91ca9e-f602-4165-bc23-9cf187aa8df2'
    + echo '   NAMESPACE        NAME                 VOLUME
    1  ix-navidrome     navidrome-config     pvc-6da081a2-bf6d-456a-8e6e-b0000b3c3fd0
    2  ix-filebot       filebot-config       pvc-2da081a2-bf2d-456a-8e6e-b0000b3c3fd9
    3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e
    4  ix-pihole-bk     pihole-bk-config     pvc-a1f722f8-db4c-4aeb-99a6-92f25bd2345a
    5  ix-plex          plex-config          pvc-be91ca9e-f602-4165-bc23-9cf187aa8df2'
       NAMESPACE        NAME                 VOLUME
    1  ix-navidrome     navidrome-config     pvc-6da081a2-bf6d-456a-8e6e-b0000b3c3fd0
    2  ix-filebot       filebot-config       pvc-2da081a2-bf2d-456a-8e6e-b0000b3c3fd9
    3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e
    4  ix-pihole-bk     pihole-bk-config     pvc-a1f722f8-db4c-4aeb-99a6-92f25bd2345a
    5  ix-plex          plex-config          pvc-be91ca9e-f602-4165-bc23-9cf187aa8df2
    + read -rt 120 -p 'Please type a number: ' selection
    Please type a number: 3
    + [[ -z 3 ]]
    ++ echo -e '   NAMESPACE        NAME                 VOLUME
    1  ix-navidrome     navidrome-config     pvc-6da081a2-bf6d-456a-8e6e-b0000b3c3fd0
    2  ix-filebot       filebot-config       pvc-2da081a2-bf2d-456a-8e6e-b0000b3c3fd9
    3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e
    4  ix-pihole-bk     pihole-bk-config     pvc-a1f722f8-db4c-4aeb-99a6-92f25bd2345a
    5  ix-plex          plex-config          pvc-be91ca9e-f602-4165-bc23-9cf187aa8df2'
    ++ grep '^3 '
    ++ awk '{print $2}'
    ++ cut -c 4-
    + app=pihole
    + [[ -z pihole ]]
    ++ echo -e '   NAMESPACE        NAME                 VOLUME
    1  ix-navidrome     navidrome-config     pvc-6da081a2-bf6d-456a-8e6e-b0000b3c3fd0
    2  ix-filebot       filebot-config       pvc-2da081a2-bf2d-456a-8e6e-b0000b3c3fd9
    3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e
    4  ix-pihole-bk     pihole-bk-config     pvc-a1f722f8-db4c-4aeb-99a6-92f25bd2345a
    5  ix-plex          plex-config          pvc-be91ca9e-f602-4165-bc23-9cf187aa8df2'
    ++ grep '^3 '
    + pvc='3  ix-pihole        pihole-config        pvc-e1466404-0c8d-460f-b83c-011b00f4e18e'
    ++ cli -m csv -c 'app chart_release query name,status'
    ++ grep -E '^pihole\b'
    ++ awk -F , '{print $2}'
    ++ tr -d ' \t\n\r'
    + status=ACTIVESTOPPED
    + [[ ACTIVESTOPPED != \S\T\O\P\P\E\D ]]
    + [[ -z '' ]]
    + echo -e '\nDefault Timeout: 500'
    
    Default Timeout: 500
    + timeout=500
    + SECONDS=0
    + echo -e '\nScaling down pihole'
    

    Application Configuration

    N/A

    Describe the bug

    Truetool fail to pull the proper container status when 2 or more app name(in truenas) start with the same name and some of them have a hyphen. This result in waiting the full timeout period for it to mount the container pvc.

    e.g.: Application name in truenas

    1. pihole
    2. pihole-bk

    The first one will fail to pull the proper status(by capturing both status resulting in a timeout) and the second will work fine.

    To Reproduce

    1. Create 1 app in truenas with a word like "test"
    2. Create a second app in truenas using the word in the first step, add a hyphen to it with another word or letters.
    3. Install truetool
    4. Try mounting the first app(without hyphen) using truetool
    5. Wait the timeout period for the pvc to be mounted

    Expected Behavior

    Pull the proper container status and not having to wait the timeout period for it to mount the pvc

    Screenshots

    N/A

    Additional Context

    Locally, as a workaround, I've changed the way the information about the status is pulled in line 16 and 25 of /includes/mount.sh:

    from: status=$(cli -m csv -c 'app chart_release query name,status' | grep -E "^$app\b" | awk -F ',' '{print $2}'| tr -d " \t\n\r")

    to: status=$(cli -m csv -c 'app chart_release query name,status' | grep -E "^$app\," | awk -F ',' '{print $2}'| tr -d " \t\n\r")

    since the \b anchor cause the remainder of the name to be ignored when matching with an hyphen present.

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by abeloin 4
  • Containers not being mounted in Truetool

    Containers not being mounted in Truetool

    App Name

    Truetool

    SCALE Version

    22.02.1

    App Version

    Latest

    Application Events

    N/A
    

    Application Logs

    N/A
    

    Application Configuration

    bash /mnt/Storage/Apps/Scripts/truetool/truetool.sh

    Describe the bug

    Can't mount containers using the menu, gives you above error

    To Reproduce

    Run bash /mnt/Storage/Apps/Scripts/truetool/truetool.sh Select 2. Pick App Get error

    Expected Behavior

    Container is mounted to /temporary

    Screenshots

    image

    Additional Context

    N/A

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by StevenMcElligott 4
  • Hyphenated Applications Fail to Update

    Hyphenated Applications Fail to Update

    I am sure you are aware of this but applications with a - in them fail to update.

    Below are my logs.

    BTW really appreciate the project tyvm :)

    Starting TrueCharts App updater...
    
    Executing Updates...
    
    Updating nzbget... 
    
    nzbget upgraded (21.1_9.0.32 --> 21.1_9.0.33)
    Updating overseerr... 
    
    overseerr upgraded (1.28.0_4.0.32 --> 1.28.0_4.0.33)
    Updating radarr... 
    
    radarr upgraded (3.2.2.5080_9.0.33 --> 3.2.2.5080_9.0.34)
    Updating openldap... 
    
    openldap upgraded (1.5.0_5.0.14 --> 1.5.0_5.0.15)
    Updating jdownloader2... 
    
    jdownloader2 upgraded (1.7.1_5.0.12 --> 1.7.1_5.0.13)
    Updating qbittorrent... 
    
    qbittorrent upgraded (4.4.0_9.0.35 --> 4.4.0_9.0.36)
    Updating podgrab... 
    
    podgrab upgraded (1.0.0_8.0.12 --> 1.0.0_8.0.13)
    Updating heimdall... 
    
    heimdall upgraded (2.2.2_9.0.36 --> 2.2.2_9.0.37)
    Updating sonarr... 
    
    sonarr upgraded (3.0.6.1342_9.0.33 --> 3.0.6.1342_9.0.34)
    Updating lidarr... 
    
    lidarr upgraded (1.0.0.2424_9.0.38 --> 1.0.0.2424_9.0.39)
    Updating phpldapadmin... 
    
    phpldapadmin upgraded (0.9.0_4.0.32 --> 0.9.0_4.0.33)
    Updating vaultwarden... 
    
    vaultwarden upgraded (1.23.1_13.0.24 --> 1.23.1_13.0.25)
    Updating sonarr-ex... 
    
    sonarr-ex failed to upgrade. 
    
    Updating traefik... 
    
    traefik upgraded (2.5.6_10.0.38 --> 2.5.6_10.0.39)
    Updating prowlarr... 
    
    prowlarr upgraded (0.2.0.1395_4.0.55 --> 0.2.0.1403_4.0.56)
    Updating plex... 
    
    plex upgraded (1.25.3.540_8.0.34 --> 1.25.3.540_8.0.35)
    Updating syncthing... 
    
    syncthing upgraded (1.18.6_9.0.34 --> 1.18.6_9.0.35)
    Updating pihole... 
    
    pihole upgraded (2022.01.1_4.0.36 --> 2022.01.1_4.0.37)
    Updating authelia... 
    
    authelia upgraded (4.33.1_8.0.27 --> 4.33.1_8.0.28)
    Updating k8s-gateway... 
    
    k8s-gateway failed to upgrade. 
    
    Updating nextcloud... 
    
    nextcloud upgraded (23.0.0_11.0.15 --> 23.0.0_11.0.16)
    Updating phpldapadmin-ex... 
    
    phpldapadmin-ex failed to upgrade. 
    
    Updating authelia-ex... 
    
    authelia-ex failed to upgrade. 
    
    Updating openldap-ex... 
    
    openldap-ex failed to upgrade. 
    
    Updating uptime-kuma... 
    
    uptime-kuma failed to upgrade. 
    
    Updating emulatorjs... 
    
    emulatorjs upgraded (1.6.0_0.0.17 --> 1.6.0_0.0.18)
    Updating Finished
    
    
    opened by Heavybullets8 3
  • --mount failed, show

    --mount failed, show "mountPVC: command not found"

    App Name

    truetool

    SCALE Version

    22.12.0

    App Version

    9a7a7841b7e333501fc70ce62948e555598ad5bd

    Application Events

    _______               _____ _                _
     |__   __|             / ____| |              | |
        | |_ __ _   _  ___| |    | |__   __ _ _ __| |_ ___
        | | '__| | | |/ _ \ |    | '_ \ / _` | '__| __/ __|
        | | |  | |_| |  __/ |____| | | | (_| | |  | |_\__ \
      __|_|_|   \__,_|\___|\_____|_| |_|\__,_|_|   \__|___/
     |__   __|         |__   __|        | |
        | |_ __ _   _  ___| | ___   ___ | |
        | | '__| | | |/ _ \ |/ _ \ / _ \| |
        | | |  | |_| |  __/ | (_) | (_) | |
        |_|_|   \__,_|\___|_|\___/ \___/|_|
    
    
    Checking for updates...
    script up-to-date
    
    Starting hotpatcher...
    Applying 22.12 HotPatch 1
    download completed
    Patch Already Applied
    Applying 22.12 HotPatch 2
    download completed
    Patch Already Applied
    /root/truetool/truetool.sh: line 182: mountPVC: command not found
    

    Application Logs

    above
    

    Application Configuration

    just a fresh install via git clone. no additional config

    Describe the bug

    can't use --mount command

    To Reproduce

    run bash /root/truetool/truetool.sh --mount

    Expected Behavior

    a list to use pvc to mount

    Screenshots

    N/A

    Additional Context

    N/A

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by troyliu0105 2
  • Garbled output when not running from shell

    Garbled output when not running from shell

    App Name

    truetool.sh

    SCALE Version

    22.02.4

    App Version

    latest (it autoupdates)

    Application Events

    n/a - truetool.sh issue
    

    Application Logs

    n/a - truetool.sh issue
    

    Application Configuration

    n/a - truetool.sh issue

    Describe the bug

    when running bash truetool.sh --no-color -b 7 -sup from cron, the email it sends contains some characters that are not present there when running the tool manually from shell.

    To Reproduce

    add the cron task as desribed in the manual and observe the resulting email

    Expected Behavior

    the weird characters should not be added

    Screenshots

    image

    I have tried sending the output to healtchecks instance with curl instead, but results are the same, when it runs from cron it loks like this: image

    In both instances if I run the same command from shell I receive the same output without the added characters.

    Additional Context

    I got nothing.

    I've read and agree with the following

    • [X] I've checked all open and closed issues and my issue is not there.
    bug 
    opened by hugalafutro 2
  • Renovate Dashboard 🤖

    Renovate Dashboard 🤖

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    This repository currently has no open or pending branches.

    Detected dependencies

    github-actions
    .github/workflows/renovate.yml
    .github/workflows/shellcheck.yml
    opened by truecharts-admin 0
Releases(v4.0.0)
Owner
TrueCharts
Community App Catalog for TrueNAS SCALE
TrueCharts
the objective of this project is to create a Node Js server with a Python client

Socket.io-Server-client Objective The objective of this project is to send data real time ,we use socket.io(server, client) on this project Server Nod

Reda Ennakouri 5 Mar 07, 2022
Lightweight asyncio compatible utilities for consuming broker messages.

A simple asyncio compatible consumer for handling amqp messages.

Mehdi Kamani 3 Apr 10, 2022
User-friendly packet captures

capture-packets: User-friendly packet captures Please read before using All network traffic occurring on your machine is captured (unless you specify

Seth Michael Larson 2 Feb 05, 2022
PcapXray - A Network Forensics Tool - To visualize a Packet Capture offline as a Network Diagram

PcapXray - A Network Forensics Tool - To visualize a Packet Capture offline as a Network Diagram including device identification, highlight important communication and file extraction

Srinivas P G 1.4k Dec 28, 2022
An API for controlling Wi-Fi connections on Balena devices.

Description An API for controlling Wi-Fi connections on Balena devices. It does not contain an interface, instead it provides API endpoints to send re

8 Dec 25, 2022
A pure python implementation of multicast DNS service discovery

python-zeroconf Documentation. This is fork of pyzeroconf, Multicast DNS Service Discovery for Python, originally by Paul Scott-Murphy (https://github

Jakub Stasiak 483 Dec 29, 2022
Simple HTTP Server for CircuitPython

Introduction Simple HTTP Server for CircuitPython Dependencies This driver depen

Adafruit Industries 22 Jan 06, 2023
Tool written on Python that locate all up host on your subnet

HOSTSCAN Easy to use command line network host scanner. From noob to noobs. Dependencies Nmap 7.92 or superior Python 3.9 or superior All requirements

NexCreep 4 Feb 27, 2022
DNS monitoring system built with Python.

DNS monitoring system built with Python.

Andressa Cabistani 7 Sep 28, 2021
Roadster - Distance to Closest Road Feature Server

Roadster: Distance to Closest Road Feature Server Milliarium Aerum, the zero of

Textualization Software Ltd. 4 May 23, 2022
Simulate Attacks With Mininet And Hping3

Miniattack Simulate Attacks With Mininet And Hping3 It measures network load with bwm-ng when the net is under attack and plots the result. This demo

Geraked 3 Oct 03, 2022
🌐 Tools for Networking

🌐 Network Tools Tools for Networking This repository contains the tools needed to make networking easier. Make sure to download all of the requiremen

Tornaido 1 Jan 15, 2022
Asyncer, async and await, focused on developer experience

Asyncer, async and await, focused on developer experience. Documentation: https:

Sebastián Ramírez 895 Dec 28, 2022
CORS Bypass Proxy Cloud Function

CORS Bypass Proxy Cloud Function

Elayamani K 1 Oct 23, 2021
Impacket is a collection of Python classes for working with network protocols.

What is Impacket? Impacket is a collection of Python classes for working with network protocols. Impacket is focused on providing low-level programmat

SecureAuth Corporation 10.4k Jan 09, 2023
Automatically block traffic on Cloudflare's side based on Nginx Log parsing.

AutoRL This is a PoC of automatically block traffic on Cloudflare's side based on Nginx Log parsing. It will evaluate Nginx access.log and find potent

Nova Kwok 62 Dec 28, 2022
A repository dedicated to IoT(internet of things ) and python scripts

📑 Introduction Week of Learning is a weekly program in which you will get all the necessary knowledge about Circuit-Building, Arduino and Micro-Contr

27 Nov 22, 2022
Modern Denial-of-service ToolKit for python

💣 Impulse Modern Denial-of-service ToolKit 💻 Main window 📡 Methods: Method Target Description SMS PHONE Sends a massive amount of SMS messages and

1 Nov 29, 2021
Burp Extension that copies a request and builds a FFUF skeleton

ffuf is gaining a lot of traction within the infosec community as a fast portable web fuzzer. It has been compared and aligned (kinda) to Burp's Intruder functionality. Thus, Copy As FFUF is trying t

Desmond Miles 81 Dec 22, 2022
CSP-style concurrency for Python

aiochan Aiochan is a library written to bring the wonderful idiom of CSP-style concurrency to python. The implementation is based on the battle-tested

Ziyang Hu 127 Dec 23, 2022