A TrueCharts automatic and bulk update utility

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

    root@truenas[.../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
    • actions/checkout v3.2.0@755da8c3cf115ac066823e79a1e1788f8940201b
    • renovatebot/github-action v34.77.1@33fce9286b85fbc0be2a9a18f03db7e0acf3bfa1
    .github/workflows/shellcheck.yml
    • actions/checkout v3@755da8c3cf115ac066823e79a1e1788f8940201b
    • actions/checkout v3@755da8c3cf115ac066823e79a1e1788f8940201b
    • actions/setup-python v4@5ccb29d8773c3f3f653e1705f474dfaa8a06a912
    • pre-commit/action v3.0.0@646c83fcd040023954eafda54b4db0192ce70507
    opened by truecharts-admin 0
Releases(v4.0.0)
Owner
TrueCharts
Community App Catalog for TrueNAS SCALE
TrueCharts
An opensource library to use SNMP get/bulk/set/walk in Python

SNMP-UTILS An opensource library to use SNMP get/bulk/set/walk in Python Features Work with OIDS json list [Find Here](#OIDS List) GET command SET com

Alexandre Gossard 3 Aug 3, 2022
A script to automatically update the github's proxy IP in hosts file.

updateHostsGithub A script to automatically update the github's proxy IP in hosts file. Now only Mac and Linux are supported. (脚本自动更新本地hosts文件,目前仅支持Ma

null 2 Jul 6, 2022
ARTEMIS: Real-Time Detection and Automatic Mitigation for BGP Prefix Hijacking.

ARTEMIS: Real-Time Detection and Automatic Mitigation for BGP Prefix Hijacking. This is the main ARTEMIS repository that composes artemis-frontend, artemis-backend, artemis-monitor and other needed containers.

INSPIRE Group @FORTH-ICS 273 Jan 1, 2023
Raspberry Pi Based Serial Console Server, with PushBullet Notification of IP changes, Automatic VPN termination, custom menu, Power Outlet Control, and a lot more

ConsolePi Acts as a serial Console Server, allowing you to remotely connect to ConsolePi via Telnet/SSH/bluetooth to gain Console Access to devices co

null 120 Jan 5, 2023
Automatic Proxy scraper and Proxy-rotating Nitro Generator.

Automatic Proxy scraper and Proxy-rotating Nitro Generator.

Tawren007 2 Nov 8, 2021
This is a python based command line Network Scanner utility, which input as an argument for the exact IP address or the relative IP Address range you wish to do the Network Scan for and returns all the available IP addresses with their MAC addresses on your current Network.

This is a python based command line Network Scanner utility, which input as an argument for the exact IP address or the relative IP Address range you wish to do the Network Scan for and returns all the available IP addresses with their MAC addresses on your current Network.

Abhinandan Khurana 1 Feb 9, 2022
A Python based command line ARP Spoofer utility, which takes input as arguments for the exact target IP and gateway IP for which you wish to Spoof ARP request

A Python based command line ARP Spoofer utility, which takes input as arguments for the exact target IP and gateway IP for which you wish to Spoof ARP request

Abhinandan Khurana 1 Feb 10, 2022
An automatic reaction network generator for reactive molecular dynamics simulation.

ReacNetGenerator An automatic reaction network generator for reactive molecular dynamics simulation. ReacNetGenerator: an automatic reaction network g

Tong Zhu Research Group 35 Dec 14, 2022
An automatic web reconnaissance tool written in python3.

WebRecon is an automatic web reconnaissance tool written in python3. Provides a command line interaction similar to msfconsole. The Exasmple.py file is provided, and you can write your own scripts yourself.

prophet 1 Feb 6, 2022
A light-weight open-source project CLI utility for showing services running on ports in a host

Portable Port Scanner (ppscanner) Portable Port Scanner (ppscanner) is a light-weight open-source CLI utility that leverages on nmap to make quick and

null 1 Oct 30, 2021
Simple reverse backdoor utility, that uses sockets to communicate.

reverse_backdoor Simple reverse backdoor utility, that uses sockets to communicate. How to use Run rev_bd_listener.py using command below: $ python3 r

null 1 Dec 10, 2021
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams Setup IP Fabric Setup Go to Settings > Webhooks > Add webhook Provide a name URL will be: 'http://<Y

Community Fabric 1 Jan 26, 2022
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams and/or Slack Setup IP Fabric Setup Go to Settings > Webhooks > Add webhook Provide a name URL will b

Community Fabric 1 Jan 26, 2022
Fast and configurable script to get and check free HTTP, SOCKS4 and SOCKS5 proxy lists from different sources and save them to files

Fast and configurable script to get and check free HTTP, SOCKS4 and SOCKS5 proxy lists from different sources and save them to files. It can also get geolocation for each proxy and check if proxies are anonymous.

Almaz 385 Dec 31, 2022
A TCP Chatroom built with python and TCP/IP sockets, consisting of a server and multiple clients which can connect with the server and chat with each other.

A TCP Chatroom built with python and TCP/IP sockets, consisting of a server and multiple clients which can connect with the server and chat with each other. It also provides an Admin role with features including kicking and baning of users.

null 3 May 22, 2022
List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.

List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.

Anders Pitman 7.3k Jan 3, 2023
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX 12k Jan 2, 2023
Start a simple TCP Listener on a specified IP Address and Port Number and receive incoming connections.

About Start a simple TCP Listener on a specified IP Address and Port Number and receive incoming connections. Download Clone using git in terminal(git

AgentGeneric 5 Feb 24, 2022
An advanced real time threat intelligence framework to identify threats and malicious web traffic on the basis of IP reputation and historical data.

ARTIF is a new advanced real time threat intelligence framework built that adds another abstraction layer on the top of MISP to identify threats and malicious web traffic on the basis of IP reputation and historical data. It also performs automatic enrichment and threat scoring by collecting, processing and correlating observables based on different factors.

CRED 225 Dec 31, 2022